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