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
不再使用,编译器和运行时优化可能能够更早地释放内存)。
- 将引用存储在变量中将花费很少的时间。
不知道之前有没有问过(找了没找到)
下面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
不再使用,编译器和运行时优化可能能够更早地释放内存)。 - 将引用存储在变量中将花费很少的时间。