Как можно "а


этот вопрос уже есть ответ здесь:

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

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

в код:

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

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

3 52

3 ответа:

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

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

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

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

Integer a = 128, b = 128;

это не так:

Integer a = 127, b = 127;

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

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

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