l**********9 发帖数: 537 | 1 String a="abhay"
String b="deol"
System.out.println(a+b);
======================
String a=new String("abhay");
String b=new String ("deol");
System.out.println(a+b);
========================
Which is more efficient? why?
有2种看法,参看职业杯
http://www.careercup.com/question?id=69271
谢谢了 |
n********u 发帖数: 194 | 2 第一个efficinet。
第二个要先生成一个object,然后把object的指针给a。 |
l********n 发帖数: 86 | 3 the first one is more efficient |
l**********9 发帖数: 537 | 4 如果是第一次创建a和b,第一种也需要在String Pool创建对象,然后将a指向String
Pool里的对象呀, 这和第二种在heap创建对象再指向a效率差不多吧, 另外,因为
第一种先需要查找String pool里面是否存在"abhay"字符串,所以还需要多的开销,是
不是第一种就效率低些呢?
【在 n********u 的大作中提到】 : 第一个efficinet。 : 第二个要先生成一个object,然后把object的指针给a。
|
s******u 发帖数: 501 | 5 第二种方法是先从"abhay"生成一个string object,然后把这个object作为参数传给构
造函数(copy constructor)在生成一个新的string object,最后把指针指向这个后
生成的object。所以总共生成两次string object,而前一个方法只生成一次就够了
【在 l**********9 的大作中提到】 : 如果是第一次创建a和b,第一种也需要在String Pool创建对象,然后将a指向String : Pool里的对象呀, 这和第二种在heap创建对象再指向a效率差不多吧, 另外,因为 : 第一种先需要查找String pool里面是否存在"abhay"字符串,所以还需要多的开销,是 : 不是第一种就效率低些呢?
|