Java基础题

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

基本类型字节
boolean11
byte18
char216
short216
int432
float432
long864
double864

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

基本类型缓冲池值
booleantrue/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、说一下你知道的异常?异常分为两大类,分别是什么?

在这里插入图片描述

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值