黑马程序员技术交流社区

标题: 有关String类的内容! [打印本页]

作者: 电饭煲    时间: 2014-5-17 14:32
标题: 有关String类的内容!
为了创建一个字符串“this is a program”哪个方法好??原因!
String s1="this is a program";
String s1=new String("this is a program");
作者: 别小乐    时间: 2014-5-17 15:03
String a = new String("aa"),代表在堆内存中,创建了一个字符串对象,变量a指向该对象,而该对象又指向在常量池中的字符串常量。
而String a = "aa"代表直接由变量a指向常量池中的字符串,省去了中间的堆内存中的对象,因为new对象时,都会在堆中创建对象。
这就像如果有:
String s1 = "hello";
String s2 = "hello";
那么
System.out.println(s1==s2);
结果为true,因为他们的地址值是一致的,都指向常量池中的字符串常量。

String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1==s2);
结果则是false,因为他们都在堆中建立了对象,而对象之间的地址值不同
具体说哪个好,我觉得在单单说创建字符串而言,应该都差不多吧。不知道这样解释怎么样?
作者: 向前看向前走    时间: 2014-5-17 15:15
这两一样,如果推荐,我还是觉得第一个好,这样子我们使用比第二个方便
作者: 海世山盟    时间: 2014-5-17 19:08
第一种情况,内存有一个实例,(字符串),第二种情况内存有两个实例 一个是字符串 一个是new String();因此第二种是比较浪费空间的。
作者: 张志民    时间: 2014-5-17 19:15
第一种方法好
作者: ______Shadow丶    时间: 2014-5-17 22:05
学习学习啦,顶下
作者: 苏-L-w    时间: 2014-7-1 21:07
    学习啦!




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