读帖有感。
今天看到一篇博客是讲解String,以及String使用堆、栈、常量池。讲的和仔细,很透彻,很接近底层,有一定的难度。
原贴:https://www.iteye.com/topic/522167
学到的:
想理解String和堆、栈、常量池这三者之间的关系就必须清楚拘留字符串对象。
拘留池(其中的常量字符就是拘留字符串对象)
公共语言运行库会自动维护一个名为“拘留池”(intern pool) 的表,它包含程序中以编程方式声明或创建的每个唯一的字符串的一个引用。因此,具有特定值的字符串的实例在系统中只有一个。
//代码1
String sa=new String("Hello world");
String sb=new String("Hello world");
System.out.println(sa==sb); // false
//代码2
String sc="Hello world";
String sd="Hello world";
System.out.println(sc==sd); // true
如博客中所讲:
代码1中: