java中的链式赋值是如何定义的,考虑以下几点:
- 链式赋值和链式声明之间有区别吗?
- 有没有办法让引用类型重复语句而不是传递引用?
例如
Integer a, b = new Integer(4);
在JLS 15.26 赋值运算符中它说
在运行时,赋值表达式的结果是赋值发生后变量的值。赋值表达式的结果本身不是变量。
所以a == b
应该是真的。
有没有办法实现
Integer a = new Integer(4)
Integer b = new Integer(4)
在一行中,因此
a != b
, 因为a
和b
是不同的对象。
附加信息
这个问题已经回答了,但我觉得还不够清楚,所以这里有一些代码来澄清它。
Integer a = null, b = null, c = null;
System.out.println(a + " " + b + " " + c); // null null null
a = b = c = new Integer(5); // <-- chained assignment
System.out.println(a + " " + b + " " + c); // 5 5 5
System.out.println(a.equals(b)); // true
System.out.println(b.equals(c)); // true
System.out.println(a == b); // true
System.out.println(b == c); // true