这样的JAVA有区别??

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:11:34
import java.util.*;
public class testinhansfor {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
for(int i:a)
System.out.println(i);
Collection c = new HashSet();
c.add("a");
c.add("b");
c.add("c");
for(Object o:c)
System.out.println(o);
}
如果我把 c.add("a");
c.add("b");
c.add("c");这三句改成这样是有什么样的区别呢。
c.add(new String("a"));
c.add(new String("a"));
c.add(new String("a"));

"a"本身就是String对象,如果你使用new String("a")就相当于创建了2个对象,十分浪费。而且使用第一种形式,如果字符串内容相同,是不会再次创建对象的。

百度 java 字符串常量池 就知道了

"a"是在串池中,new String("a")是对象