面试题(二)
-
基本类型的包装类型有哪些?
int的包装类型(Integer)
char(Character)
其余基本类型对应首字母大写 -
static 关键字的用法有哪些?
修饰成员变量或方法;静态代码块;静态内部类;静态导包 -
静态代码块与非静态代码块的区别?
静态代码块在类加载时执行,且只执行一次,非静态代码块在创建实例时,调用方法之前执行,创建则执行 -
构造方法的作用是什么?
主要作用是创建对象的初始化工作,JAVA有默认无参构造器,当定义了有参构造器后,默认无参构造器消失,一般也要显式定义无参构造器。确保任何场景该类都可以使用无参构造方法 -
String为什么是不可变的?
String 类中使用final修饰保存字符串的数组
jdk8:private final char value []
jdk9:private final byte[] value -
String 、 StringBuffer 、StringBuilder 有什么区别?
String 不可变,而StringBuffer、StringBuilder 可变;
对String类型修改会生成新的String对象,性能和内存开销大,而StringBuffer 、StringBuilder的修改直接在原本的数据,不创建新对象,内存开销小;
String不可变是常量,线程安全、StringBuffer 有同步锁也是线程安全的、StringBuilder非线程安全但效率高 -
什么是多态?
一个对象多种形态,具体指父类接口的引用指向子类实例(方法重写) -
什么是 JVM 、 JRE 、 JDK ?
JVM JAVA虚拟机用于运行class文件
JRE JAVA运行环境包括核心类库
JDK JAVA开发工具包 -
什么是构造方法?
构造方法的名称与类名相同、无返回类型、创建对象用new关键字,属于显示调用 -
Java中的修饰符有哪些?
访问修饰符:public protected 默认 private
abstract:修饰类和方法
final:修饰成员变量或类
static:修饰成员变量、内部类、代码块
transient:修饰属性,对象序列化时该属性不进行序列化,数据不存储
volatile:修饰属性,线程之间可见
native:修饰方法,表示该方法不由程序实现,而是本地方法库(C或C++实现)获得
synchronized:修饰方法和代码块,表示该方法和代码块是最小执行单元,执行结束前其他线程无法访问