byte 类型比较_java基本类型篇

1. java中有哪些基本数据类型?占用的字节是多少?对应包装器类型是什么?

答:请看表。占用空间大小与平台是32位、64位无关。boolean类型所占空间大小没有明确指定,仅定义为能够取字面值true或者false。

ffb5c95992661bb2b5cef0f328b91b82.png

2. 不同的基本类型之间可以相互赋值吗(哪些类型间赋值可隐式转换)?

byte 

答:从面代码的结果来看,boolean除外,7个基本类型间根据其可表示的数据范围,有明显的地位高低(大的可以承接住小的赋值)。

解析:上面还只是一部分,为了清楚看清所有的赋值有无隐式转换的情况,总结了下表。从表中可看出:

double是绝对的大哥,谁都能罩;
float(占4字节)是二哥,虽然比三哥long(占8字节)个子矮,但是一身内功深厚;
int是四哥,毕竟是哥,五弟、六妹、七弟都能罩住;
short是五弟,功力有限,只能罩小师弟(七弟byte);
char六妹、byte七弟功力太弱,无奈只够自保;

821089b9cd52ce530f0797398a7ec11f.png

3. 不同的基本类型进行运算符运算之后类型会变吗?

byte 

答:从上面代码结果来看,基本上还是谁拳头大听谁的,结果是参与运算的变量里地位最高的哥的类型。但是几个小弟(short、char、byte)间的规则有点混乱,固总结下表。

大哥、二哥、三哥、四哥,只要谁在场,就都听谁的。
参与打架的没有四位大哥,只有五弟、六妹、七弟的话,统一听四哥的。(四哥小日子混的不错,权力还蛮大)

54acca9d06794f46ca7bb5ca01811439.png

4. 类里的成员如果是基本数据类型, 那么会自动初始化吗?初始化成什么?

答: 会, 初始化为0或者false。

5. 代码中出现的具体数字会被当成什么类型?

float 

答:整数会当成int,小数会当成double,所以要给float变量赋值,小数必须显示增加f标识。

6. 基本类型与其对应的包装类型进行 == 比较,比较的是地址还是值?

Integer 

答:上述结果为true。包装类型会自动拆包,比较两者的值。

7. Integer包装类型之间使用==比较,比较的是地址还是值?

Integer 

答:结果是false,true。比较的是对象的地址。

解析:num1跟num2是两个Integer对象,地址不相等。由于JVM为Integer准备了-128到127的整形常量池,num3、num4都指向同一个对象(常量池里127对应的Integer对象)。

Integer num3 = 127会被java平台编译转换为 Integer num3 = Integer.valueOf(127),而-128到127的数字是从常量池获取的逻辑就在Integer.valueOf方法中。

8. 自动拆箱、自动装箱发生在哪个阶段?编译阶段还是运行时?

答:自动拆装箱是一种语法糖,在编译阶段,Java平台自动为我们做了转换,以保证不同写法在运行时等价(生成的字节码一致)。

自动装箱:Integer num = 1 自动转换为 Integer num = Integer.valueOf(1);
自动拆箱:int number = num 自动转换为 int number = num.intValue();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值