Java { Object a = new Object(); 之间的区别a.getVariable() } 和 { new Object().getVariable() }

Java Difference between { Object a = new Object(); a.getVariable() } and { new Object().getVariable() }

不知道之前有没有问过(找了没找到)

下面2个代码块有区别吗?

1:

// Let's say we want to get variable from non-static object
Object a = new Object();
int varWeWant = a.getVariable();

2:

int varWeWant = new Object().getVariable();

如您所见,第二个选项是单行代码 我知道 java,这两个代码都先创建对象并通过方法检索变量,但我不是 java 专家,所以我想知道它们是否有任何区别?

抱歉,如果这是一个愚蠢的问题:D 我只是想知道这个太久了

谢谢

首先创建一个对象供以后引用,然后在其上调用方法。

第二个创建一个只能用于调用该单一方法的临时对象。

确实,如果您使用的是第二种方式,您首先应该质疑该对象是否是必需的。除非您使用 Builder 或类似模式,否则将该方法设为独立函数可能更有意义。

两者都产生相同的结果 但是 选项 2 是对象实例的匿名引用...这意味着您不能对该语句后的对象执行任何操作...

int x = new Object().getVariable(); 这是在对象一次性使用时完成的。 对象 a = 新对象 (); //创建一个名为a的对象 这是在对象具有多个变量和函数时完成的。这种方式只创建一次对象并调用变量和函数。如果我们每次都使用 new Object().getSomeFunction() 那么每次都会创建新对象。它的内存很昂贵,必须写入更多行。

varWeWant中的结果是一样的。

一些细微差别:

  • 在第一个版本中,您以后可以将该对象用于其他目的,因为您将对它的引用存储在 a 变量中(这是显而易见的)。
  • 引入变量a占用少量内存
  • 只要变量a引用了这个Object,垃圾回收器就不能回收它的内存。 (但是一旦 a 不再使用,编译器和运行时优化可能能够更早地释放内存)。
  • 将引用存储在变量中将花费很少的时间。