黑马程序员技术交流社区

标题: 字符串的运行结果的具体分析 [打印本页]

作者: android0276    时间: 2014-7-5 16:44
标题: 字符串的运行结果的具体分析
本帖最后由 android0276 于 2014-7-6 20:32 编辑

01: public class Test {
    public static void main(String[] args) {
         String first = "Phone:" + "55555";
         String second = "Phone:" + 55555;
         String third = new String("Phone:") + new String("55555");
         String fourth = new String("Phone:") + 55555;
         System.out.println(first==second);
         System.out.println(first==third);
         System.out.println(first==fourth);
    }
}

作者: 001可望成功    时间: 2014-7-5 23:06
其他的不多解释,new会强制性的开辟新内存,这样就不会在内存中寻找字符窜,因此只要使用new,就是不一样的,即false
作者: hxwo211314    时间: 2014-7-5 23:25
System.out.println(first==second); 结果为true,因为两个字符串的地址值一样.
System.out.println(first==third);   结果为false,因为String third属于new的字符串,他会在堆内存中强制性开辟出一个新的内存,因此另个字符串的地址值不一样,所以为false.
System.out.println(first==fourth);  结果为false,原因和上面的一样.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2