JAVA-笔试-关于包装类

文章讨论了Java中Integer类的valueOf()方法在数值范围内的行为,基本数据类型与包装类的自动装箱与拆箱,以及三元表达式中类型转换的规则。
摘要由CSDN通过智能技术生成
public class interview {
    public static void main(String[] args) {

        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j);

        Integer m = 1;
        Integer n = 1;
        System.out.println(m == n);

        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y);
    }
}

答案为:

        false
        true
        false

解析:在从基本数据类型转化为包装类的时候,调用了Integer中的valueOf()

        在这两段代码中可以看出,valueOf()方法存在范围在-128~127的数组,如果int值在这个范围内则直接使用此数组里的值,否则重新new一个Integer。

        所以在第三道题中是存在了两个对象,对象地址值不同则false。


public class interview {
    public static void main(String[] args) {

        int i = 10;
        double d = 10.2;
        System.out.println(i == d);

        Integer i1 = 10;
        Double d1 = 10.2;
        System.out.println(i1 == d1);

        Integer m = 1000;
        double n = 1000;
        System.out.println(m == n);

        Integer x = 1000;
        int y = 1000;
        System.out.println(x == y);
    }
}

答案为:

        false   

        报错
        true
        true

解析:通过字节码文件可以看出是先对1000转换为了Integer,然后Integer转换为int,最后进行int to double 的基本数据类型之间的比较


public class interview {
    public static void main(String[] args) {

        Object o1 = true ? new Integer(1) : new Double(2.0);
        System.out.println(o1);

        Object o2;
        if(true)
            o2 = new Integer(1);
        else
            o2 = new Double(2.0);
        System.out.println(o2);
    }
}

答案为:

        1.0
        1

解析:Java中三元表达式返回值类型要相同,强制类型转换自动向精度更高的类型转换

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值