Подтвердить что ты не робот

Как можно утверждать, что "a <= b && b <= a && a!= B"?

Вот код, который я должен выяснить, как это возможно. У меня есть ключ, но я не знаю, как это сделать. Я думаю, что речь идет о отрицательных и положительных числах и, возможно, переменных модификаторах. Я новичок, я смотрел решение повсюду, но я не мог найти ничего полезного.

возникает вопрос: вам нужно объявить и инициализировать две переменные. Условие if должно быть истинным.

код:

if( a <= b && b <= a && a!=b){
       System.out.println("anything...");
}

Я ценю, что вы нашли время.

4b9b3361

Ответ 1

Это невозможно с примитивными типами. Вы можете добиться этого с помощью целых целых чисел:

Integer a = new Integer(1);
Integer b = new Integer(1);

В сравнении <= и >= будет использоваться значение unboxed 1, а != будет сравнивать ссылки и будет успешным, так как они являются разными объектами.

Ответ 2

Это тоже работает:

Integer a = 128, b = 128;

Это не означает:

Integer a = 127, b = 127;

Авто-бокс a int является синтаксическим сахаром для вызова Integer.valueOf(int). Эта функция использует кеш для значений меньше 128. Таким образом, назначение 128 не имеет кэш-атаки; он создает новый экземпляр Integer при каждой операции автоматического бокса, а a != b (сравнение ссылок) истинно.

Назначение 127 имеет кэш, а результирующие объекты Integer - это тот же самый экземпляр из кеша. Итак, ссылочное сравнение a != b неверно.

Ответ 3

Другим редким случаем для переменных класса может быть то, что другой поток может изменить значения a и b во время выполнения сравнения.