0

java中的链式赋值是如何定义的,考虑以下几点:

  • 链式赋值和链式声明之间有区别吗?
  • 有没有办法让引用类型重复语句而不是传递引用?

例如

Integer a, b = new Integer(4);

JLS 15.26 赋值运算符中它说

在运行时,赋值表达式的结果是赋值发生后变量的值。赋值表达式的结果本身不是变量。

所以a == b应该是真的。

有没有办法实现

Integer a = new Integer(4)
Integer b = new Integer(4)

在一行中,因此 a != b, 因为ab是不同的对象。

附加信息

这个问题已经回答了,但我觉得还不够清楚,所以这里有一些代码来澄清它。

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
4

1 回答 1

1

当然:

Integer a = new Integer(4), b = new Integer(4);

就我个人而言,我认为这比使用两个单独的声明可读性差,而且如果不重复new Integer(4)或提取到其他方法,然后调用两次,就没有办法做到这一点。

于 2013-08-13T14:50:07.310 回答