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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

面试题:
String s1 = new String(“abc”);
String s2 = “abc”;
有区别吗?

6 个回复

倒序浏览
在Java中,初始化String分为两种:
1. String s1 = "11";
2. String s2 = new String("11")
区别:
方法1中,先在内存中查找有没有"11"这个字符串对象存在,如果存在就把s1指向这个字符串对象;
方法2中,不论内存中是否已经存在"11"这个字符串对象,都会新建一个对象。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
好像有点懂了
回复 使用道具 举报
1198914316 发表于 2014-10-16 12:11
在Java中,初始化String分为两种:
1. String s1 = "11";
2. String s2 = new String("11")

学习了!!!
回复 使用道具 举报 1 0
1. String s1 = new String(“abc”);
2. String s2 = “abc”;

正巧今天在复习String,把新学到的知识点分享出来:

Java创建对象的标准方式是方法1,但是由于String类特别常用,所以java在对String进行初始化时提供了一种简写方式,即方法2.
方法1实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s1申请的空间.
回复 使用道具 举报
有,对于第一个,内存中两个对象。第二个,只有一个对象
回复 使用道具 举报
String s1 = new String(“abc”);
创建一个新对象,将“abc”指向s1。这里包含两个对象。

String s2 = “abc”;
简写形式 ,在内存中寻找是否用相同的字符串,如果有就那地址,如果没有就创建一个“abc”。

s1 == s2 ; false  ,s1是一个对象, s2是两个对象
s1.equals(s2); true,两个字符串内容相同。可以这么理解。貌似也就是比较地址吧。这个没太确定,研究研究去
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马