Java开发工程师最新面试题库系列——Java基础部分 (2)

RuntimeException异常和受检异常之间的区别:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)。一般来讲,如果没有特殊的要求,我们建议使用RuntimeException异常。

什么时候会发生空指针异常?

答:对值为空的变量进行操作时

你知道有哪些避免空指针异常的方法?

答:对值为空的变量进行操作时先判断是否为空

throw和throws有什么区别?

答:throw用于在方法中抛出异常,throws写在方法名称后面,用于声明抛出的异常类型

try里面return,finally还会执行吗?

答:会的,除了System.exit(0)finally都会执行

int和Integer有什么区别?

答:int是java的基本数据类型,Integer是Java的引用数据类型。Integer是int的包装类,它提供了对int的转换和计算等API,操作起来更加方便

什么是包装类型?有什么用?

答:包装类型是对基本数据类型的封装,底层其实就是对基本数据类型的操作提供了API和语法糖

什么是自动装箱和拆箱?

答:基本数据类型转引用数据类型为自动拆箱,反之为自动装箱

你怎么理解Java中的自动类型转换和强制类型转换?

答:小转大自动转换,拓展变量的内存字节。大转小强制转换,缩小内存字节损失精度

你怎么理解Java中的类型提升?

答:语法糖

你怎么理解强、软、弱、虚引用?

答:

这里写图片描述

switch是否能用在long上?

答:可以,switch支持int、byte、short、char以及对应的包装类,和String类型

switch case支持哪几种数据类型?

答:如上

String的底层实现是怎样的?

答:char数组,以及字符串常量池

String是可变的吗?为什么?

答:不可变,java中的字面量字符串都存放在字符串常量池中,无法改变,只能引用

为什么不能用 + 拼接字符串?

答:因为如果用+号拼接字符串JVM编译时会进行优化,转变为StringBuilder拼接。单个表达式使用问题不大,但是如果是多个表达式或者在循环内使用会频繁创建StringBuilder对象大大降低性能

StringBuffer和StringBuilder有什么区别?

答:前者线程安全效率低,后者线程不安全效率高,

StringJoiner有什么用?

答:用于做字符串拼接的工具类

//间隔符是, StringJoiner joiner1 = new StringJoiner(","); joiner1.add("1").add("2").add("3"); System.out.println(joiner1.toString()); //1,2,3 //以[开头中间的间隔符是,以]结尾 StringJoiner joiner2 = new StringJoiner(",", "[", "]"); joiner2.add("1").add("2").add("3"); System.out.println(joiner2.toString()); //[1,2,3] //拼接sql 的in条件的时候, 使用这个就方便很多了 StringJoiner joiner3 = new StringJoiner("','", "'", "'"); joiner3.add("1").add("2"); //'1','2'

普通类和抽象类有什么区别?

答:抽象类被abstract所修饰,

静态内部类和普通内部类有什么区别?

答:普通内部类持有外部外部类的应用,可以调用外部类的属性及方法,而静态内部类没有持有外部内引用,无法调用外部内的方法及属性。静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成 员(方法,属性)。 非静态内部类能够访问外部类的静态和非静态成员。静态内部类不能访问外 部类的非静态成员,只能访问外部类的静态成员。

实例化方式不同:

静态内部类:不依赖于外部类的实例,直接实例化内部类对象

非静态内部类:通过外部类的对象实例生成内部类对象

静态方法可以直接调用非静态方法吗?为什么?

答:不能,因为静态方法的加载顺序优先于非静态方法,且静态方法属于类,无需对象实例,非静态方法则需要类的实例才能调用

静态变量和实力变量有什么区别?

答:静态变量属于类,无需创建对象通过类名即可调用,而实例变量需要类创建实例才可以调用。加载角度而言只要JVM加载了静态变量所处的类,静态变量就以及可以使用,为分配了空间。而实例变量需要创建对象之后才会为其分配空间

内部类可以访问其外部类的成员吗?

答:非静态内部类可以,因为它持有者外部内的引用。

接口和抽象类有什么区别?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxwpz.html