让我们说
String s=new String ("test");
String s="test";
还有
Integer i=new Integer(10);
Integer i=10;
有什么区别?
答案 0 :(得分:2)
String s = new String(“ test”)>>将始终创建一个新实例。
String s =“ test” >>如果字符串池(Java Heap)中已经存在字符串文字“ test ”,则引用 s 将指向此文字,不会创建新实例。 请参考下面的图片,以获得更多的清晰度。
答案 1 :(得分:1)
Integer i = new Integer(10);
整数i = 10;
有什么区别?
Integer i = new Integer(10);
上面的语句构造一个新创建的Integer
对象,该对象代表指定的int
值。 i
是一个引用变量,新的Integer(10)
创建一个值为Integer
的类型int 10
的对象,并将该对象引用分配给变量i
。
有关整数的更多信息,位于:java.lang.Integer
考虑以下语句:
Integer i = 10;
结果与之前的构造相同;创建一个整数包装对象。这只是一种方便的语法。例如,请参见以下代码:
Integer i = new Integer(10);
System.out.println(++i); // this prints 11
在++
类定义中没有java.lang.Integer
这样的语法。这是怎么回事?
语句++i
,将Integer
取消框为int
,对++
值执行int
操作,然后将其装回-会产生一个对象整数,其int
值从10
递增到11
。此功能称为自动装箱;请注意,此功能是Java 5中引入的。
注意:以上澄清不适用于本文中有关String
类的问题。