分配和创建对象有什么区别

时间:2018-10-05 05:06:04

标签: java string integer variable-assignment

让我们说

String s=new String ("test");
String s="test";

还有

Integer i=new Integer(10);
Integer i=10;

有什么区别?

2 个答案:

答案 0 :(得分:2)

String s = new String(“ test”)>>将始终创建一个新实例。

String s =“ test” >>如果字符串池(Java Heap)中已经存在字符串文字“ test ”,则引用 s 将指向此文字,不会创建新实例。 请参考下面的图片,以获得更多的清晰度。

enter image description here

答案 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类的问题。