- clou
-
其实String s = “asdf”;
这个时候s就是一个String类型的引用,就是说s是内存中asdf的代表!他可以代表内存中的“asdf”处理一些能力范围内的问题,就是说,内存中的asdf有权利做什么,s才有权利做什么!
new String("asdf");是创建了一个新字符串,就是新开辟了一个内存空间,内存空间的内容是“asdf”; new String("asdf");就是一个初始化
呵呵,难怪你不理解了,String 这个类型有些特殊,慢慢就明白了!
- gitcloud
-
String s = New String ("asdf");这句代码new出来一个对像 “asdf”,这个对象存放在堆类存中。而这个s是变量存放在栈类存里,s就是这个对象的引用,它指向堆类存中得对象“asdf”。所以说b就是对象“asdf”的引用。
比如:int a = 3 ; int b = a ;这个b就是引用了a,使得b也指向3。
- 皮皮
-
s存放在栈中,比如地址是0x1001;
”asdf"存放在堆中,比如地址是0x2001;
在0x2001中存放着字符串"asdf",而在0x1001中存放着地址0x2001
所以你访问s时,就是访问了它其中的地址0x2001,0x2001中存放着的“asdf”
- ardim
-
s存在栈中,他指向堆中的New对象,由堆中的new 对象指向asdf,asdf属于字符串常量存在在常量区。因此S就是一个引用。你说他指针也差不多,。。。
- 再也不做稀饭了
-
1."ASDF"是一个常量 存放在data segment
2. new String这句话是在堆内存中一个指针,指向data segment的这个常量
3.String s可能是在栈中产生一个s指向堆的new String这个地址
- 阿啵呲嘚
-
String s = New String ("asdf")
"asdf"这句已经new 了一个string类型的对象
New String ("asdf")这句就是等于在上面的基础上再new 了一次