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。
网友评论