Java中字符串内存位置浅析
Posted little飞(IT小猛男)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中字符串内存位置浅析相关的知识,希望对你有一定的参考价值。
String内存位置说明
-
显式的String常量
String a = "holten";
String b = "holten";
- 第一句代码执行后就在常量池中创建了一个值为holten的String对象;
- 第二句执行时,因为常量池中存在holten所以就不再创建新的String对象了。
- 此时该字符串的引用在虚拟机栈里面。
-
String对象
String a = new String("holtenObj"); String b = new String("holtenObj");
- Class被加载时就在常量池中创建了一个值为holtenObj的String对象,第一句执行时会在堆里创建new String("holtenObj")对象;
- 第二句执行时,因为常量池中存在holtenObj所以就不再创建新的String对象了,直接在堆里创建new String("holtenObj")对象。
验证一下
/** * Created by holten.gao on 2016/8/16. */ public class Main { public static void main(String[] args){ String str1 = "高小天"; String str2 = "高小天"; System.out.println(str1==str2);//true String str3 = new String("高大天"); String str4 = new String("高大天"); System.out.println(str3==str4);//false } }
返回结果:
true false
以上是关于Java中字符串内存位置浅析的主要内容,如果未能解决你的问题,请参考以下文章
关于Delphi中的字符串的浅析(瓢虫大作,里面有内存错误的举例)
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段