帮我看个小问题

来源:百度知道 编辑:UC知道 时间:2024/07/09 00:04:13
Collection c = new HashSet();
c.add("Hello");
c.add(new Integer(100));

"Hello"这个String类型怎么不用new啊 下面 的却需要new
请帮我详解! 谢谢

Java运行环境有一个字符串池,由String类维护。执行语句String s="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给s,如果不存在则先在字符串池中新建一个字符串

"abc",然后再将其赋给s。
执行语句String s=new String("abc")时,不管字符串池中是否存在字

符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给s。
前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。

hello是 string类型,而后面的的是整型啊。

事实证明:100 也不用new

public class Test01 {
public static void main(String[] args) { Collection c = new HashSet();
c.add("Hello");
c.add(100);
Iterator itr = c.iterator();

while(itr.hasNext()){
System.out.println(itr.next());
}
}
}