这是我必须弄清楚它是如何成为可能的代码。我有一个线索,但我不知道该怎么做。我认为它是负数和正数,也可能是变量修饰语。我是初学者,我到处寻找解决方案,但我找不到任何可用的东西。
问题是:您需要声明并初始化这两个变量。 if条件必须为真。
代码:
if( a <= b && b <= a && a!=b){
System.out.println("anything...");
}
感谢您抽出宝贵时间。
答案 0 :(得分:96)
原始类型无法实现。你可以用盒装整数实现它:
Integer a = new Integer(1);
Integer b = new Integer(1);
<=
和>=
比较将使用未装箱的值1,而!=
将比较参考,并且会成功,因为它们是不同的对象。
答案 1 :(得分:20)
这也有效:
Integer a = 128, b = 128;
这不是:
Integer a = 127, b = 127;
自动装箱int
是致Integer.valueOf(int)
的语法糖。此函数使用缓存小于128的值。因此,128的赋值没有缓存命中;它为每个自动装箱操作创建一个新的Integer
实例,a != b
(参考比较)为真。
127的赋值具有缓存命中,生成的Integer
对象实际上是缓存中的相同实例。因此,参考比较a != b
为假。
答案 2 :(得分:13)
类变量的另一种罕见情况可能是,在执行比较时,另一个线程可能会更改a
和b
的值。