关于DataSegment的一些知识
本帖最后由 菜得要自杀 于 2011-10-10 17:19 编辑今天看别人在群里问了一个问题:
String s ="Hello World";
String s = new String("Hello World");
这两条语句分有什么区别呢,每条语句会创建几个对象呢。
我突然想起以前马士兵讲的DataSegment存放常量,所有字符串常量。。静态变量,都在里面放着。。
于是我想,"Hello World"是一个常量
第一条语句在栈内存
里有一个s,s的值指向数据区(DataSegment)的 HelloWorld 对象,所以有一个对象
而第二句代码,因为有了一个NEW,,所以栈内存有一个S,指向堆的一片空间,堆空间的指针又指向数据区的HelloWorld,所以有两个对象
不知道对不对...欢迎指正。。
由于DataSegment是不可重复的,所以,你不管写多少个常量HelloWorld,他们都是一个对象。。。
页:
[1]