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

时间:2017-07-29 17:14:08

标签: java class oop object instantiation

我不知道之前是否曾询问过(我搜索过但无法找到)

以下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 我只是想知道这件事太久了

感谢名单

4 个答案:

答案 0 :(得分:5)

第一个创建一个可以在以后引用的对象,然后在其上调用一个方法。

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

真的,如果你使用第二种方式,你应该首先询问对象是否必要。除非您使用Builder或类似模式,否则将该方法作为独立函数可能更有意义。

答案 1 :(得分:0)

两者都产生相同的 BUT 选项2对象实例是匿名引用...这意味着在该语句之后你不能对该对象做任何事情......

答案 2 :(得分:0)

int x = new Object()。getVariable(); 当对象一次性使用时完成此操作。 Object a = new Object(); //创建一个名为a的对象 当对象具有多个变量和函数时,这样做。这样,对象只创建一次,并调用变量和函数。如果我们每次都使用新的Object()。getSomeFunction(),那么每次都会创建新对象。必须写出昂贵的记忆和更多的线条。

答案 3 :(得分:0)

varWeWant中的结果是相同的。

一些细微差别:

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