美文网首页JAVA 入门到入土
30.1 String常量池 及 String类型在内存中的存在

30.1 String常量池 及 String类型在内存中的存在

作者: 琴匣自鸣 | 来源:发表于2020-01-21 21:34 被阅读0次

这里说一下步骤 

    1.str1 str2是直接创建的字符串,以这种形式创建的字符串都在字符串常量池中,那么str1 str2栈内保存的地址就是堆内的字符串常量池里的字符串对象,这时都是指向同一个常量池内的对象,而常量池内的对象也是保存了一个地址,保存的地址是在堆内的byte[] 数组. 所以str1== str2 比较地址是成立的

    2.str3是new出来的并不在常量池内则在堆内正常创建一个字符串对象,str3指向这个字符串对象地址为0x999, 而之前创建的char[]类型数组则指向内存中对应的char[]数组对象,String类型会将这个char[]数组转化为一个byte[]数组再在内存中划出一块区域然后字符串对象指向的是这个转化出的byte[]数组

相关文章

网友评论

    本文标题:30.1 String常量池 及 String类型在内存中的存在

    本文链接:https://www.haomeiwen.com/subject/unqszctx.html