Member 13699903 Ответов: 3

Почему он дает истину я имею в виду что у меня будет какая то другая ячейка памяти а у i2 другая она должна давать ложь


почему он дает true, я имею в виду, что у меня будет какая-то другая ячейка памяти, а у i2 есть другая, она должна давать false ??

я написал этот код, почему он дает истину, и я знаю, что нужно знать причину.Может кто-нибудь знает ответ, а потом скажет мне:
public class ADS {
  public static void main(String[] args) {
    int i=new Integer(10);
    int i2=10;
    System.out.println(i==i2);
  }
}


Что я уже пробовал:

Эй, кто-нибудь объяснит причину, почему он дает истину, я имею в виду, что у меня будет какая-то другая ячейка памяти, и у i2 есть другая, она должна давать ложь ??

Richard Deeming

В какой системе математики находится число 10 нет равно числу 10?!

Jon McKee

Ты меня опередил. Есть гипотетический +1

3 Ответов

Рейтинг:
2

phil.o

Это целочисленные значения, а не указатели на целочисленные значения.
Таким образом, оператор сравнения выполняет сравнение значений; поскольку оба значения равны, он возвращает true.


Рейтинг:
2

Patrice T

Вы должны понять, что эти 2 строки-это 2 способа сказать одно и то же.

int i=new Integer(10);
int i2=10;

Эти 2 строки являются целыми числами со значением 10, поэтому они равны.
Используйте отладчик и посмотрите сами.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

Richard Deeming

Если вы это сделаете:

Integer i = new Integer(10);
Integer i2 = new Integer(10);
System.out.println(i==i2);
тогда вы будете возможно получить false.

Если вы это сделаете:
Integer i = Integer.valueOf(10);
Integer i2 = 10;
System.out.println(i==i2);
тогда вы получите true, поскольку значения между -128 и 127 автоматически кэшируются:
Ява подводных камней - фонд[^]
Глава 5. конверсии и рекламные акции[^]

Если вы объявите переменные как int скорее, чем Integer, тогда вы получите true потому что вы выполняете тест на равенство значений, а не тест на равенство ссылок.