黑马程序员技术交流社区

标题: String对象面试提,有会的不,我还没讲到呢,哈哈,要预习 [打印本页]

作者: め白衬衫    时间: 2014-10-16 11:22
标题: String对象面试提,有会的不,我还没讲到呢,哈哈,要预习
面试题:
String s1 = new String(“abc”);
String s2 = “abc”;
有区别吗?

作者: 1198914316    时间: 2014-10-16 12:11
在Java中,初始化String分为两种:
1. String s1 = "11";
2. String s2 = new String("11")
区别:
方法1中,先在内存中查找有没有"11"这个字符串对象存在,如果存在就把s1指向这个字符串对象;
方法2中,不论内存中是否已经存在"11"这个字符串对象,都会新建一个对象。
作者: め白衬衫    时间: 2014-10-16 12:15
好像有点懂了
作者: treanow    时间: 2014-10-16 12:58
1198914316 发表于 2014-10-16 12:11
在Java中,初始化String分为两种:
1. String s1 = "11";
2. String s2 = new String("11")

学习了!!!
作者: noiary    时间: 2014-10-16 13:28
1. String s1 = new String(“abc”);
2. String s2 = “abc”;

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

Java创建对象的标准方式是方法1,但是由于String类特别常用,所以java在对String进行初始化时提供了一种简写方式,即方法2.
方法1实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s1申请的空间.

作者: 哈达洋    时间: 2014-10-16 19:02
有,对于第一个,内存中两个对象。第二个,只有一个对象
作者: nerveva2000    时间: 2014-10-16 19:51
String s1 = new String(“abc”);
创建一个新对象,将“abc”指向s1。这里包含两个对象。

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

s1 == s2 ; false  ,s1是一个对象, s2是两个对象
s1.equals(s2); true,两个字符串内容相同。可以这么理解。貌似也就是比较地址吧。这个没太确定,研究研究去





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