Java基础题

1、八个基本类型占多少个字节?占多少位?

基本类型 字节
boolean 1 1
byte 1 8
char 2 16
short 2 16
int 4 32
float 4 32
long 8 64
double 8 64

2、哪些基本类型有缓存池?

基本类型 缓冲池值
boolean true/false
byte 所有值
short -128~127
int -128~127
char \u0000 to \u007F

3、String是不是可变长度?

不是,因为它被声明为final,不可继承,内部使用的char数组也是被声明为final,所以不可变。然而,由于string是不可变的特性,常常被用做hashmap的key值,它只需要计算一次。同时,它是线程安全的。

4、StringBuffer and StringBuilder的区别?

它们两个都是可变长度,但StringBuffer是线程安全的,内部使用了synchronized 同步,而StringBuilder不是线程安全的

5、接口与抽象类有什么区别?

  1. 一个类可以实现多个接口,但是不能继承多个抽象类。
  2. 接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
  3. 接口的成员只能是 public 的,而抽象类的成员可以有多种访问权限。

6、类的初始化顺序是怎么样的?

存在继承的情况下,初始化顺序为:

  1. 父类(静态变量、静态语句块)
  2. 子类(静态变量、静态语句块)
  3. 父类(实例变量、普通语句块)
  4. 父类(构造函数)
  5. 子类(实例变量、普通语句块)
  6. 子类(构造函数)

7、说一下你知道的异常?异常分为两大类,分别是什么?

Java基础题_第1张图片

8、Java 中 ++ 操作符是线程安全的吗?

不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差。还会存在竞态条件(读取-修改-写入)。

9、byte a=127,b=127;a = a + b与a += b的区别?

+= 隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。
(因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错)

你可能感兴趣的:(为面试而生,java,开发语言,后端)