【问题标题】:What is the difference between assignment and creating object [duplicate]赋值和创建对象有什么区别[重复]
【发布时间】:2019-03-10 13:13:19
【问题描述】:

假设我们做到了

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

还有

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

有什么区别?

【问题讨论】:

  • 在你的例子中,很少。也许会问这个问题,生孩子和生孩子有什么区别
  • 我不明白这一点。你能详细说明一下java吗?或者你能让我都明白吗?
  • @Sanjay-Dev 我建议你阅读这个概念 OOP 有很多关于这个概念的网站教。

标签: java string integer variable-assignment


【解决方案1】:

String s=new String ("test") >> 总是会创建一个新实例。

String s="test" >> 如果字符串字面量 "test" 已经存在于字符串池 (Java Heap) 中,请参考 s 将指向此文字,不会创建新实例。 请参考下图以获得更清晰的信息。

【讨论】:

  • 并且,s1.equals(s3) 返回一个 true
【解决方案2】:

整数 i=新整数(10);

整数 i=10;

有什么区别?

Integer i = new Integer(10);

上面的语句构造了一个新创建的Integer对象,它代表了指定的int值。 i 是一个引用变量,new Integer(10) 创建一个类型为Integer 的对象,其值为int 10,并将这个对象引用赋值给变量i

有关 Integer 的更多信息,请访问: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 类的问题。

【讨论】:

猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2014-03-11
  • 2011-01-11
  • 1970-01-01
  • 2017-05-27
  • 2021-10-25
  • 2012-12-09
  • 1970-01-01
相关资源
最近更新 更多