A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晓风妮子 中级黑马   /  2013-4-20 10:36  /  1923 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = new String(); String s = null; String s ="";
这三句话有什么区别啊?
为什么说String s = new String("hello");是建立了两个对象呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 先小涛 于 2013-4-20 10:45 编辑

String s = new String("hello"); 是两个对象,一个是"hello"字符串对象;另一个是通过new String()创建了一个对象,只是这个对象包含了“hello”这个对象
String s = new String();创建了一个对象,这个对象是一个空字符串,并把这个对象赋给s;
String s = null; 只是声明了一个String类型的引用变量,不指向任何对象;
String s = ""; 意思是创建了一个String类型的引用变量,并指向“”空字符串这个对象

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 up.yfei 于 2013-4-20 12:41 编辑

String s = new String();      new了一个 新的String 对象
String s = null;    一个叫s的String变量指向了null   也就是没有指向
String s ="";       一个叫s的String的变量指向了 ""的字符串,也就是空串
String s = new String("hello");
首先new String 这是一个对象,"hello"是一个对象

之前确实错了,感谢上面的哥们


点评

s是变量,不是对象,只是这个变量里存放了对象的内存地址值。new String()这返回一个对象,“hello” 也是一个字符串对象  发表于 2013-4-20 10:47

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
陈迎春 来自手机 中级黑马 2013-4-23 11:08:21
板凳
先小涛 发表于 2013-4-20 10:40
String s = new String("hello"); 是两个对象,一个是"hello"字符串对象;另一个是通过new String()创建了 ...

我想问下,“hello”对象存在于那块内存中,new String()对象存在于那块内存中~谢谢
回复 使用道具 举报
回答下上面老兄的疑问,根据我的了解,"hello"和new String()都是存放在栈空间的,因为他们都是用来产生一个字符串,字符串又是引用类型的,所以,值都在栈空间,但是指向他们的引用却都是存放在堆空间,"hello"和new String()都是在String pool里面的,只不过,new String()是空字符串,相当于""。
回复 使用道具 举报
再来会答下楼主的问题,String s = new String(); String s = null; String s ="";
这三者的区别,首先,String s=new String()和String s="";如果是但是比较值得时候是相同的都是空字符串
但是如果是前面已经声明过了一个空字符串,后面再写着两句话给变量赋值,那就出现不同之处了,使用new String()的方式会开辟一块新的内存空间,这是
变量的引用和原先出现的空字符串的引用是不同的。
例如:
String a="";
String b="";
String c=new String();
当用“==”进行比较时,a==b返回true,而a==c则返回false
但是用equals比较abc是相等的
为什么说String s = new String("hello");是建立了两个对象
因为,"hello"本身就是一个对象,存放在String pool里面,然后使用new String(),又会创建一个新的空间,这时就是两个对象咯

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
黄玉昆 黑马帝 2013-4-23 12:53:56
7#
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马