菜得要自杀 发表于 2011-10-10 17:13:08

关于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]
查看完整版本: 关于DataSegment的一些知识