首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java笔试题

Java笔试题

作者头像
chenchenchen
发布于 2022-11-29 13:01:40
发布于 2022-11-29 13:01:40
48600
代码可运行
举报
文章被收录于专栏:chenchenchenchenchenchen
运行总次数:0
代码可运行

推荐合集

https://blog.csdn.net/shakespeare001/article/details/51151650

牛客网

18-05-02

1、对属性使用getter和setter方法,体现的是注入性。

2、构造函数constructor

    A.构造函数可以省略,省略构造函数则new对象实例时,所有的数据类型赋值为0,bool类型赋值为FALSE,引用类型赋值为NULL。

    B.构造函数必须与类同名,而且不能有返回类型。而方法是可以与类同名的,但是必须声明返回数据类型,改变大小写即可。比如

    C. constructor在一个对象被new时执行,当new对象是首先调用静态初始数据块(可省略),然后调用父类构造函数(不是子类则不调用),最后调用自己的构造函数(一定调用),这样才能生成一个对象的实例。

    D. 一个类可以有多个重载的构造函数,重载的要求是参数不同。

3、Java初始化顺序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A{
    static {
        System.out.println("父类静态代码块");
    }
    public A(){
        System.out.println("父类构造方法");
    }
    {
        System.out.println("父类初始化块");
    }
}
public class B extends A{
    static{
        System.out.println("子类静态代码块");
    }
    public B(){
        System.out.println("子类构造方法");
    }
    {
        System.out.println("子类初始化块");
    }
    public static void main(String[] args){
        new B();
    }
}

静态块:用static申明,JVM加载类时执行,仅执行一次,且按声明顺序执行, 静态成员初始化-->静态代码块初始化-->静态方法初始化

构造块:类中直接用{}定义,每一次创建对象时执行

顺序:父类静态代码块-->子类静态代码块-->父类普通代码块-->父类构造方法-->子类代码块-->子类构造方法;

类实例销毁:首先销毁子类部分,再销毁父类部分

4、线程中run()和start()的区别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
创建一个线程  Thread t1 = new Thread()

t1.run();  只是调用了一个普通方法,并没有启动另一个线程,程序还是会按照顺序执行相应的代码。

t1.start();  则表示,重新开启一个线程,不必等待其他线程运行完,只要得到cup就可以运行该线程。

比如下边的一个例子:

[java] view plain copy
<pre name="code" class="java">public class demo1 {  
    public static void main(String args[]) {    
        Thread t = new Thread() {    
            public void run() {    
                pong();    
            }    
        };    
        t.start();    //pingpong
//        t.run();  //pongping
        System.out.print("ping");    
    }    
    static void pong() {    
        System.out.print("pong");    
    }  
}  

5、父类Super,子类Sub extends Super

static修饰的静态成员被所有的成员所共享,静态方法不支持多态性,用那种类型声明,调用方法时就是哪种类型的方法,eg:父类变量指向子类对象时,父类变量调用的静态方法是其本身的静态方法

加载子类之前先加载父类。

Sub   sub =  new Sub( ); 直接调用子类

Super supsub= new Sub( ); 调用静态方法时则调用申明类型,父类。

Super supsub=   new Super( ); 对于Super supsub=  new Sub( )的访问特点:成员变量是编译看左,运行看左,所以用的是父类的成员变量;成员方法是编译看左,运行看右,运行的是子类的方法;静态方法同成员变量,编译看左运行看左

6、现在有以下语句:

Integer i01 =  59 ; int i02 =  59 ; Integer i03 =Integer.valueOf( 59 ); Integer i04 =  new Integer( 59 )。

Integer i01=59 的时候,会调用 Integer 的 valueOf 方法,

1 2 3 4 5

public static Integer valueOf( int i) {       assert IntegerCache.high>=  127 ;       if (i >= IntegerCache.low&& i <= IntegerCache.high)       return IntegerCache.cache[i+ (-IntegerCache.low)];       return new Integer(i); }

这个方法就是返回一个 Integer 对象,只是在返回之前,看作了一个判断,判断当前 i 的值是否在 [-128,127] 区别,且 IntegerCache 中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新的对象。

在这里的话,因为程序初次运行,没有 59 ,所以,直接创建了一个新的对象。

int i02=59 ,这是一个基本类型,存储在栈中。

Integer i03 =Integer.valueOf(59); 因为 IntegerCache 中已经存在此对象,所以,直接返回引用。

Integer i04 = new Integer(59) ;直接创建一个新的对象。

System. out .println(i01== i02); i01 是 Integer 对象, i02 是 int ,这里比较的不是地址,而是值。 Integer 会自动拆箱成 int ,然后进行值的比较。所以,为真。

System. out .println(i01== i03); 因为 i03 返回的是 i01 的引用,所以,为真。

System. out .println(i03==i04); 因为 i04 是重新创建的对象,所以 i03,i04 是指向不同的对象,因此比较结果为假。

System. out .println(i02== i04); 因为 i02 是基本类型,所以此时 i04 会自动拆箱,进行值比较,所以,结果为真。

7、

SpringMVC的原理:

    SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。

DispatcherServlet作为springMVC的前端控制器,负责接收用户的请求并根据用户的请求返回相应的视图给用户。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java每日一练(2017/6/13)
Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 课前导读 ●回复"每日一练"获取以前的题目! ●答案公布时间:为每期发布题目的第二天 ★【新】回复“测试题”获取昨天发布的软件工程师初级阶段测试题答案 ●我希望大家积极参与答题!有什么不懂可以加小编微信进行讨论 ★珍惜每一天,拼搏每一天,专心每一天,成功每一天。 题目要求 本期题目: (单选题) 1以下Java程序运行的结构是: public class Tester{ public static void main(Stri
Java学习
2018/04/16
8941
雷锋教你阿里面试题
看到结果。我们的结论完全正确,有的面试官也可能问一下loadClass在什么时候执行静态代码块呢,其实当执行newInstance()时候才会执行静态代码块。
小土豆Yuki
2020/06/15
6280
Java面试题总结
自增变量 主要是对 i++ 和 ++i 的理解 public class Test01 { public static void main(String[] args) { // 变量自增 i++ ++i的理解 int i = 1; i = i++; // int j = i++; int k = i + ++i * i++; System.out.println("i=" + i);
shaoshaossm
2022/12/27
3240
Java面试题总结
实训day05--静态,继承
2018.06.08 1.private关键字 权限修饰符 修饰类,方法,属性,构造函数 最常用的形式: 把成员变量用private修饰 提供相应的get/set方法
曼路
2018/10/18
3860
Integer、new Integer() 和 int 比较的面试题
https://www.cnblogs.com/cxxjohnson/p/10504840.html
java思维导图
2019/08/23
8790
Java 复习 【知识改变命运】第九章
饿汉式的缺点:饿汉式,一般创造重量级的对象,但是有可能创建了对象没有使用,造成资源的浪费
用户11319080
2024/11/21
700
Java 复习 【知识改变命运】第九章
一篇文章搞明白Integer、new Integer() 和 int 的概念与区别
1、Integer 是 int 的包装类,int 则是 java 的一种基本数据类型
程序员追风
2019/08/25
1.9K0
一篇文章搞明白Integer、new Integer() 和 int 的概念与区别
java小心机(5)| 浅谈类成员初始化顺序
类成员什么时候会被初始化呢?一般来说:"类的代码在初次使用时才被加载",加载过程包括了初始化。 比如说new A()调用构造函数时,类中全部成员都会被初始化。 但对于static域(包括静态成员变量
KEN DO EVERTHING
2019/01/17
5050
Java 基础知识:面试官必问的问题
boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。
小万哥
2023/06/03
5530
Java 基础知识:面试官必问的问题
Java基础知识面试题(2020最新版)
Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比
用户7886150
2020/12/01
5270
【Java面试题】——this 和 super 的区别
this关键字代表当前对象的引用,它指向调用当前方法的对象。在类的方法中,使用 this 可以明确地访问当前对象的属性和方法,尤其是在方法参数与类的成员变量同名的情况下, this 可以避免歧义。
User_芊芊君子
2025/05/15
930
【Java面试题】——this 和 super 的区别
傻傻分不清?Integer、new Integer() 和 int 的面试题
1、Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2、Integer 变量必须实例化后才能使用,而int变量不需要 3、Integer 实际是对象的引用,当new一个 Integer时,实际上是生成一个指针指向此对象;而 int 则是直接存储数据值 4、Integer的默认值是null,int的默认值是0
Java技术栈
2019/10/22
4210
深入理解Java对象的创建过程:类的初始化与实例化
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象的创建过程。
用户7886150
2020/12/07
2.9K0
Java 基础高频面试题(2021年最新版)
因此,我花了几天时间整理了一些时下高频的 Java 基础题目,并反复斟酌,给出符合当前版本的解析。
Java架构师必看
2021/06/17
6100
Java 基础高频面试题(2021年最新版)
25道Java基础面试题
如果值的范围在-128到127之间,它就从高速缓存返回实例。否则 new 一个Integer对象。new Integer 就是一个装箱的过程了,装箱的过程会创建对应的对象,这个会消耗内存,所以装箱的过程会增加内存的消耗,影响性能。
HaC
2020/12/30
4770
25道Java基础面试题
【面向对象编程】继承
在编程中,继承可以实现代码的复用,减少重复编写代码的工作量。通过继承,子类可以继承父类的属性和方法,并且可以根据需要进行扩展和修改,提高了代码的可维护性和可扩展性。再例如现实世界的复杂性,但事物之间存在某种共性,那么程序设计就需要考虑
用户11288949
2024/09/24
2150
【面向对象编程】继承
【Java 试题】从一道题目再看 Java 继承
一道 Java 基础题:两个类,ClassB 继承自 ClassA,代码如下,判断输出内容:
程序员架构进阶
2021/04/13
6160
【Java 试题】从一道题目再看 Java 继承
程序员的56大Java基础面试问题及答案
首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。
鱼找水需要时间
2023/12/23
2740
程序员的56大Java基础面试问题及答案
Java几个重要关键字的使用
跟类相关:package(包) class(类) abstract(抽象) extends(继承) implements(实现) interface(接口)
用户7886150
2020/12/13
3400
BATJ面试必会之常见Java基础面试题(附答案)
Byte short int long float double boolean char
乔戈里
2019/09/10
1K0
BATJ面试必会之常见Java基础面试题(附答案)
相关推荐
Java每日一练(2017/6/13)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档