Какое сравнение между равными и ==?
1. Boolean TEM = A == B;
Прежде всего, == Сравнение определенно является адресом. С точки зрения стека, то есть == Сравнение - это контент в стеке. Поскольку стек используется для хранения буквальных значений автоматических переменных в восьми основных типах в Java (автоматические переменные представляют собой переменные, определенные в форме int a = 1;). Если это автоматическое значение сравнения переменных, оно определенно используется для сравнения его с ==, потому что Equals () является методом, поэтому он должен быть вызван объектом, который будет использоваться для сравнения. Автоматические переменные - это ни экземпляры классов, ни ссылки классов, поэтому метод equals () не может быть использован.
2. Boolean TEM = A.Equals ("B");
Метод equals () обычно используется для сравнения содержания объекта, но в некоторых случаях он также сравнивает адреса двух объектов.
Следующий
Напишите программу тестирования
пакет com; import java.util.date; public class test {public static void main (string [] args) {integer integer1 = new Integer (1); Integer Integer2 = Новое целое число (1); String str1 = new String ("123"); String str2 = new String ("123"); Дата дата 1 = новая дата (); Дата дата 2 = новая дата (); Double Double1 = новый Double ("1,0"); Double2 = новый Double ("1,0"); Boolean TEM1 = новый логический (правда); Boolean Tem2 = новый логический (правда); Object Object1 = new Object (); Object Object2 = new Object (); System.out.println ("---- объект -------"); System.out.println (Object1.equals (Object2)); System.out.println (Object1 == Object2); System.out.println (object1.equals (Object1)); System.out.println (Object1 == Object1); System.out.println ("-----------"); System.out.println (tem1.equals (tem2)); System.out.println (TEM1 == TEM2); System.out.println ("--- Double --------"); System.out.println (double1.equals (double2)); System.out.println (double1 == double2); System.out.println ("---- Integer -------"); System.out.println (integer1.equals (integer2)); System.out.println (integer1 == integer2); System.out.println ("-----------"); System.out.println (str1.equals (str2)); System.out.println (str1 == str2); System.out.println ("-----------"); System.out.println ("-----------"); System.out.println (str1 == str2); System.out.println ("-----------"); System.out.println (date1.equals (date2)); System.out.println (date1 == date2); }}результат:
---Объект-----
ЛОЖЬ
ЛОЖЬ
истинный
истинный
--- логический -----
истинный
ЛОЖЬ
---Двойной-----
истинный
ЛОЖЬ
--- целое число -----
истинный
ЛОЖЬ
---Нить-----
истинный
ЛОЖЬ
---Дата-----
истинный
ЛОЖЬ
Во -первых, когда два сравниваемых объекта одинаковы, результаты == и equals () являются истинными, и когда два объекта разные, они возвращаются false. Таким образом, когда == и равные используются для сравнения объектов, они сравнивают адрес объекта, но на самом деле сущность одинакова. Вот код метода equals () в классе объекта:
public boolean equals (Object obj) {return (this == obj); }Для логического, двойного (поплавка), межджера (снимка, длинная), строка и дата я также нашел их исходные коды. Ниже я опубликовал исходные коды метода equals () в логическом, двойном, интерневом, строке и дате. В настоящее время метод equals () был переписан, потому что эти классы унаследованы от класса объекта.
Логическое:
public boolean equals (Object obj) {if (obj instanceof boolean) {return value == ((boolean) obj) .booleanValue (); } вернуть false; }Двойной:
public boolean equals (Object obj) {return (obj ancessionof Double) && (doubletolongbits (((Double) obj) .value) == doubletolongbits (значение)); }Интернет:
public boolean equals (Object obj) {if (obj instanceof integer) {return value == ((integer) obj) .intvalue (); } вернуть false; } Нить:
public boolean equals (object anobject) {if (this == anobject) {return true; } if (anobject instanceof String) {String anotherstring = (String) anobject; int n = value.length; if (n == anotherstring.value.length) {char v1 [] = value; char v2 [] = anotherstring.value; int i = 0; while (n--! = 0) {if (v1 [i]! = v2 [i]) вернуть false; i ++; } вернуть true; }} вернуть false; }Дата:
public boolean equals (Object obj) {return obj ancessionof date && getTime () == ((date) obj) .getTime (); }Другими словами, в настоящее время метод Equals () класса объекта переписан, чтобы сравнить фактическое содержание двух объектов и больше не адрес. Конечно, это определенно не только это. Вот лишь несколько распространенных случаев, когда нативные классы Java переписывают метод Equals () класса объекта.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!