AM0*_*M01 2 java variables final
final Integer a = 1;
Integer b = a;
System.out.println("a: " + a); // prints 1
System.out.println("b: " + b); // prints 1
b++;
System.out.println("a: " + a); // prints 1
System.out.println("b: " + b); // prints 2
b = b + 1;
System.out.println("a: " + a); // prints 1
System.out.println("b: " + b); // prints 3
b = 10;
System.out.println("a: " + a); // prints 1
System.out.println("b: " + b); // prints 10
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释代码输出,特别是与变量B有关,那将是很好的.
好的,让我们从这开始:
final Integer a = 1;
Run Code Online (Sandbox Code Playgroud)
您已经创建了对Integer对象的最终引用,该对象是从原始int自动装箱的.
此引用可以只分配一次,而不会再分配.
Integer b = a;
Run Code Online (Sandbox Code Playgroud)
在这里,您已创建了对同一对象的第二个引用,但此引用不是最终的,因此您可以在闲暇时重新分配它.
b++;
Run Code Online (Sandbox Code Playgroud)
这是以下声明的简写:
b = new Integer(b.intValue() + 1);
Run Code Online (Sandbox Code Playgroud)
巧合的是,同样的
b = b + 1;
Run Code Online (Sandbox Code Playgroud)
最后一句话:
b = 10
Run Code Online (Sandbox Code Playgroud)
使用自动装箱来缩写此声明:
b = new Integer(10);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |