Разница между равными и == в Java
Типы данных в Java можно разделить на две категории:
1. Основной тип данных, также известный как примитивный тип данных. Байт, короткий, чар, int, long, float, double, boolean
Сравнение между ними, применяя двойной знак (==), сравнивается с их значениями.
2. Соответствующий тип данных (класс)
Когда они сравниваются с (==), они сравнивают свой адрес хранения в памяти. Следовательно, если они не являются объектами из того же нового, результат после сравнения является истинным, в противном случае результат после сравнения является ложным. Все классы в Java наследуют от объекта базового класса. Метод равных определяется в базовом классе в объекте. Первоначальным поведением этого метода является адрес памяти объекта сравнения, но в некоторых классовых библиотеках этот метод перезаписан. Например, String, Integer и Date имеют свою собственную реализацию в этих классах и больше не являются адресом хранения класса сравнения в памяти кучи.
Для равных сравнения между типами составных данных, без перезаписи метода Equals, их сравнение основано на значении адреса их местоположения хранилища в памяти. Поскольку метод Equals объекта также сравнивается с двойным равным знаком (==), поэтому результат после сравнения такой же, как результат двойного равного знака (==).
Разница между Java равно и =, ==
1. Разница между == и равна
1. == - оператор
2. equals - это метод строкового объекта
Обычно существует два типа сравнения
1. Сравнение основных типов данных
2. Сравнение эталонных объектов
1. Сравнение основных типов данных
== и равны сравнивать, равны ли значения, если равны, это истинно, иначе они ложны
2. Сравнение эталонных объектов
== и равные сравниваются с тем, равны ли адреса в памяти стека. Если равный, это истинно, иначе это ложно.
Уведомление:
1. Строка является специальным типом данных. == сравнивает, является ли эталонный адрес объекта строки одинаковым, и равным сравнивает, является ли содержимое в стеке согласным.
String ss = new String ("ABC"); String sss = new String ("ABC"); if (ss == sss) {System.out.println ("ss == sss это правда"); } if (ss.equals (sss)) {System.out.println ("ss равносильно sss - это правда"); }Вывод консоли:
SS! = SSS
SS равно SSS
Указывает, что адреса памяти SS и SS в стеке разные, но содержимое в куче одинаково.
String ss = new String ("ABC");
String ssss = ss;
// судить, являются ли эталонные адреса SS и SSS в стеке одинаковыми if (ss == ssss) {System.out.println ("ss == ssss"); } else {System.out.println ("ss! = ssss"); } // Судить, является ли содержимое SS и SSS в куче одинаковым if (ss.equals (ssss)) {System.out.println ("ss равна ssss"); } else {System.out.println ("ss не равно ssss"); }Вывод консоли:
SS == SSSS
SS равно SSSS
Это показывает, что SS и SSS являются одинаковыми объектами и что они имеют одинаковый контент в куче
2. Сравнение эталонных объектов
Testbean obj1 = new Testbean (); Testbean obj2 = new Testbean (); Тестовый бассейн obj3 = obj1; if (obj1 == obj2) {System.out.println ("obj1 == obj2"); } else {System.out.println ("obj1! = obj2"); } if (obj1 == obj3) {System.out.println ("obj1 == obj3"); } else {System.out.println ("obj1! = obj3"); }Вывод консоли:
obj1! = obj2
obj1 == obj3
Это означает, что OBJ1 и OBJ2 не один и тот же объект, а эталонный адрес в стеке разные
obj1 и obj3 - те же объекты, а эталонный адрес в стеке одинаково
2. Разница между = и равным ==
= представляет назначение, то есть назначить значение справа = переменной слева. равны и == являются операциями
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!