美文网首页程序员
网联两道Java语言特性题

网联两道Java语言特性题

作者: 陈码工 | 来源:发表于2017-10-16 10:02 被阅读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。

    相关文章

      网友评论

        本文标题:网联两道Java语言特性题

        本文链接:https://www.haomeiwen.com/subject/fmxkuxtx.html