程序员

网联两道Java语言特性题

2017-10-16  本文已影响0人  陈码工

1. 数据类型转换问题

已有int i = 10, byte b = 0;
以下哪个或者哪些赋值操作会产生编译错误?
int i1 = b;
float f = i;
double d = i;
byte b1 = i;

答案: 最后一个

实际测试:
长数据类型赋值给短数据类型会出问题
Error:(14, 19) java: incompatible types: possible lossy conversion from int to byte
短数据类型赋值给长数据类型能够自动转换
比如float f = i;

总体原则:

从小到大,可以隐式转换,数据类型将自动提升。

byte,short,char -->int -->long -->float -->double
其中, long(8byte)可以转float(4byte), 但是小数部分尾部的精度是被损失掉的.

另外, Java不同类型的长度:
boolean 这个试编译环境而定
byte 1个字节
short 2个字节
char 2个字节, 2个字节表示unicode
int 4个字节
long 8个字节
float 4个字节
double 8个字节

2. 不同classLoader如果加载了同一份class字节码是否还算同一个class

答案: 不是
JVM在判定两个class是否相同时,不仅要判断两个类名是否相同,而且要判断是否由同一个类加载器实例加载的。只有两者同时满足的情况下,JVM才认为这两个class是相同的。就算两个class是同一份class字节码,如果被两个不同的ClassLoader实例所加载,JVM也会认为它们是两个不同class。

上一篇 下一篇

猜你喜欢

热点阅读