基本类型 && String

题解

        Integer integer1 = new Integer(128);
        Integer integer2 = new Integer(128);
        System.out.print("["+(integer1 == integer2)+",");

        String s3 = "100";
        String s4 = "1"+new String("00");
        System.out.print((s3 == s4)+",");

        Character char1 = 'A';
        Character char2 = 'A';
        System.out.print((char1 == char2)+"]");

答案

`[false,false,true]`

解析

  1. 当给 Integer integer = 128 复制的时候,java编译器调用 Integer 包装类的静态方法返回 new Integer(i);因此等于在堆中new 了一个新的对象,所以integer1 和 integer2在堆中是两个不同的对象。

  2. String s3 = "100","100"存放在方法区中的字符串常量池,s3执行字符串常量池中的“100”, String s4 = "1"+new String("00");中,"1"存放在字符串常量池,new String 在堆中new 了一个String对象。
    图片说明
    常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
    只要其中一个是变量,结果就在堆中。
    如果拼接的结果调用intern()方法,返回值就在常量池中

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务