黑马程序员技术交流社区

标题: 关于String对象的问题 [打印本页]

作者: 王银龙    时间: 2013-7-29 21:56
标题: 关于String对象的问题
本帖最后由 杜光 于 2013-7-30 11:06 编辑

String str = “abc”;与 String str2 = new String("abc")有什么分别,老毕的没怎么看懂,
还有就是空串String str3 = “”;与 String str4 = null;又有什么分别呢?
作者: 手心里的温柔    时间: 2013-7-29 22:23
String str = “abc”;   有一个对象
String str2 = new String("abc")    有两个对象 参考API String类构造方法public String(String original)  初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;
                                           换句话说,新创建的字符串是该参数字符串的副本。
String str3 = “”;    指向一个对象
String str4 = null;    指向为空

希望能帮到你   共同学习哈
作者: jialihong    时间: 2013-7-29 22:27
用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。
而另一个是先在栈中创建一个对String类的对象引用变量str2,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str2指向”abc”,如果已经有”abc” 则直接令str2指向“abc”。

作者: 陈春    时间: 2013-7-29 23:09
new出来的是存在于堆内存中,而一般的是存在栈里面的。另外,字符串默认赋值的是null。希望可以帮到你!!
作者: zhouchao    时间: 2013-7-30 00:04

String str = “abc”;与 String str2 = new String("abc")
s1在内存中有一个对象
s2在内存中有两个对象
我的理解是
String str = "abc"等同与int x = 4;一样  str是一个变量名 String是变量类型  对象的话只有“abc”一个对象
String str2 = new String("abc") 等同于Person p = new Person("abc")  p是一个对象  "abc" 也是一个对象 所以s2在内存中有2个对象

str3是指向一个引用 栈内存中开辟了空间建立了对象 对象的地址值指向了堆内存中的str3
str4是没有指向引用


作者: 张强1    时间: 2013-7-30 00:22
String str = “abc”;   有一个对象str
String str2 = new String("abc")    有两个对象str2和new string("abc")
String str3 = “”;    指向一个对象
String str4 = null;    指向为空






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2