Ada*_*dam 53 java autoboxing loops if-statement
这是代码,我必须弄清楚它是如何可能的.我有一个线索,但我不知道该怎么做.我认为它是负数和正数,也可能是变量修饰语.我是初学者,我到处寻找解决方案,但我找不到任何可用的东西.
问题是:你需要声明并初始化这两个变量.if条件必须为true.
代码:
if( a <= b && b <= a && a!=b){
System.out.println("anything...");
}
Run Code Online (Sandbox Code Playgroud)
我很感谢你抽出时间.
Hen*_*nry 97
对于原始类型,这是不可能的.您可以使用盒装整数来实现它:
Integer a = new Integer(1);
Integer b = new Integer(1);
Run Code Online (Sandbox Code Playgroud)
在<=
和>=
比较将使用未装箱的值1,而!=
将比较引用,并会成功,因为它们是不同的对象.
eri*_*son 20
这也有效:
Integer a = 128, b = 128;
Run Code Online (Sandbox Code Playgroud)
这不是:
Integer a = 127, b = 127;
Run Code Online (Sandbox Code Playgroud)
自动装箱是int
一种语法糖,用于调用Integer.valueOf(int)
.此函数使用缓存小于128的值.因此,128的赋值没有缓存命中; 它Integer
为每个自动装箱操作创建一个新实例,并且a != b
(引用比较)为真.
127的赋值具有缓存命中,并且结果Integer
对象实际上是来自缓存的相同实例.因此,参考比较a != b
是错误的.