这是我必须弄清楚它的代码怎么可能。我有一个线索,但我不知道该怎么做。我认为这是关于负数和正数,也可能是变量修饰符。我是一个初学者,我到处寻找解决方案,但我找不到任何可用的东西。如何“a <= b && b <= a && a!= b”为真?
问题是:你需要声明和初始化这两个变量。 if条件必须为真。
代码:
if(a <= b && b <= a && a!=b){
System.out.println("anything...");
}
我感谢您抽出宝贵的时间。
这是我必须弄清楚它的代码怎么可能。我有一个线索,但我不知道该怎么做。我认为这是关于负数和正数,也可能是变量修饰符。我是一个初学者,我到处寻找解决方案,但我找不到任何可用的东西。如何“a <= b && b <= a && a!= b”为真?
问题是:你需要声明和初始化这两个变量。 if条件必须为真。
代码:
if(a <= b && b <= a && a!=b){
System.out.println("anything...");
}
我感谢您抽出宝贵的时间。
这工作太:
Integer a = 128, b = 128;
这不:
Integer a = 127, b = 127;
自动装箱的int
是到Integer.valueOf(int)
呼叫语法糖。该函数使用缓存的值小于128.因此,128的分配没有缓存命中;它会为每个自动装箱操作创建一个新的Integer
实例,并且a != b
(参考比较)为true。
127的赋值有一个缓存命中,并且得到的Integer
对象实际上是来自缓存的相同实例。所以,参考比较a != b
是错误的。
应该指出的是,规范中没有指定缓存内容的*确切*边界。 –
@JoachimSauer根据规范,必须缓存区间[-128,127],例如,127会始终失败。超出该间隔*的值可能会被缓存,这会导致失败。 – erickson
类变量的另一个罕见情况可能是另一个线程可能在执行比较时更改a
和b
的值。
对于'int',我不认为'if'评估为'真' –
我不会感到惊讶,如果有浮点数的组合,这可以工作。 – Thilo
我看着-0F和0F,但他们不会这样做。我认为亨利是预期的答案。 – erickson