我不知道之前是否曾询问过(我搜索过但无法找到)
以下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 我只是想知道这件事太久了
感谢名单
答案 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
,编译器和运行时优化就可以更早地释放内存。)