首页 > 其他 > 详细

对String的内存解析

时间:2016-02-26 20:25:54      阅读:143      评论:0      收藏:0      [点我收藏+]
@Test
    public void stringTest(){
        /*
         * str1和str2地址指向字符串常量池
         * 解析: str1 在字符串常量池中创建出java 地址例如为:0x456 
         * str2建立时会去常量池中找是否有java 有的话赋值 str2地址为0x456
         * str3和str4地址指向堆空间
         * str在对空间创建,Stringvalue属性指向字符串常量池,存在赋值给其内部属性 value地址为0x456 而对于创建的空间而言 也是有自己的地址为0x789
         * 所以str3为0x789 
         * ==判断地址
         * equals判断内容 同为字符串常量池中的java 所以相等
         */
        String str1="java";
        String str2="java";
        String str3=new String("java");
        String str4=new String("java");
        System.out.println(str1==str2);//true  同指向字符串常量池中所以值和地址都相同
        System.out.println(str1.equals(str2));//true 
        System.out.println(str1==str3);//false   地址不同 str3有自己独有的地址
        System.out.println(str1.equals(str3));//true
        System.out.println(str3==str4);//false   地址不同
        System.out.println(str3.equals(str4));//true str3和str4中的value属性(用来保存字符串的)也是指向字符串常量池中的0x456所以值是相等的
    }

技术分享

对String的内存解析

原文:http://www.cnblogs.com/bweird-java/p/5221596.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!