对String的内存解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对String的内存解析相关的知识,希望对你有一定的参考价值。
@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的内存解析的主要内容,如果未能解决你的问题,请参考以下文章