logo

Różnica między porównywaniem String przy użyciu metody == i .equals() w Javie

Oboje metoda równa(). i == operator służą do porównywania dwóch obiektów w Javie.

The Metoda Java string równa się (). , porównuje dwa ciągi i zwraca wartość true, jeśli wszystkie znaki w obu ciągach pasują, w przeciwnym razie zwraca wartość false.



The == operator porównuje lokalizację odniesienia lub pamięci obiektów na stercie, niezależnie od tego, czy wskazują one na tę samą lokalizację, czy nie.
Ilekroć tworzymy obiekt za pomocą operatora nowy , utworzy nowe miejsce w pamięci dla tego obiektu. Używamy więc operatora ==, aby sprawdzić, czy lokalizacja pamięci lub adres dwóch obiektów są takie same, czy nie.

Ogólnie rzecz biorąc, oba operatory równa się () i == w Jawa służą do porównywania obiektów w celu sprawdzenia równości, ale oto niektóre różnice między nimi:

  1. Główna różnica między metoda .equals(). i == operator jest to, że jedna jest metodą, a druga operatorem.
  2. Możemy użyć operatorów == do porównania referencji ( porównanie adresów ) i .equals() dla porównanie treści . Krótko mówiąc, == sprawdza, czy oba obiekty wskazują na tę samą lokalizację w pamięci, podczas gdy .equals() ocenia porównanie wartości w obiektach.
  3. Jeśli klasa tego nie robi zastąpić metodę równości , domyślnie używa metody równości (Object o) najbliższej klasy nadrzędnej, która zastąpiła tę metodę. **Widzieć Dlaczego zastąpić metodę równości (obiekt) i hashCode ()? szczegółowo.

Przykład:

Metoda String równa się () i operator == w Javie.



Jawa






język maszyny

// Java program to understand> // the concept of == operator> public> class> Test {> >public> static> void> main(String[] args)> >{> >String s1 =>'HELLO'>;> >String s2 =>'HELLO'>;> >String s3 =>new> String(>'HELLO'>);> >System.out.println(s1 == s2);>// true> >System.out.println(s1 == s3);>// false> >System.out.println(s1.equals(s2));>// true> >System.out.println(s1.equals(s3));>// true> >}> }>

>

>

Wyjście

true false true true>

Wyjaśnienie: Tutaj tworzymy dwa obiekty, a mianowicie s1 i s2.

  • Zarówno s1, jak i s2 odnoszą się do tych samych obiektów.
  • Kiedy użyjemy operatora == do porównania s1 i s2, wynik będzie prawdziwy, ponieważ oba mają te same adresy w strunowy stały basen.
  • Używając równości, wynik jest prawdziwy, ponieważ porównuje tylko wartości podane w s1 i s2.

Pula ciągów Java

s1 = WITAJ

s2 = WITAJ

Kopia Java

s3 = WITAJ

Przyjrzyjmy się szczegółowo obu operatorom:

ubuntu, które polecenie

Operator równości(==)

Operatory równości możemy zastosować dla każdego typu pierwotnego, łącznie z typem boolowskim. Możemy także zastosować operatory równości dla typów obiektów.

Przykład:

== operator w Javie.

Jawa




// Java program to illustrate> // == operator for compatible data> // types> class> Test {> >public> static> void> main(String[] args)> >{> >// integer-type> >System.out.println(>10> ==>20>);> >// char-type> >System.out.println(>'a'> ==>'b'>);> >// char and double type> >System.out.println(>'a'> ==>97.0>);> >// boolean type> >System.out.println(>true> ==>true>);> >}> }>

>

rdzeń języka Java

>

Wyjście

false false true true>

Jeśli zastosujemy == dla typów obiektów, to tak powinna być zgodność między typami argumentów (albo dziecko do rodzica, albo rodzic do dziecka, albo ten sam typ). W przeciwnym razie otrzymamy błąd w czasie kompilacji.

Przykład:

Jawa




// Java program to illustrate> // == operator for incompatible data types> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t =>new> Thread();> >Object o =>new> Object();> >String s =>new> String(>'GEEKS'>);> >System.out.println(t == o);> >System.out.println(o == s);> >// Uncomment to see error> >System.out.println(t==s);> >}> }>

>

>

Wyjście:

false false // error: incomparable types: Thread and String>

Metoda Java String równa się().

W Javie tzw Metoda String równa się(). porównuje dwa podane ciągi na podstawie danych/zawartości ciągu. Jeśli cała zawartość obu ciągów jest taka sama, to zwraca prawdę . Jeśli wszystkie znaki nie są dopasowane, to tak zwraca wartość fałszywą .

Składnia:

Składnia : publiczna wartość logiczna równa się (obiekt innego obiektu)

Parametr :

klasa abstrakcyjna w Javie
  • inny obiekt- Ciąg do porównania

Zwroty:

  • Wartość logiczna :
    • PRAWDA- Jeśli ciągi są równe
    • FAŁSZ- jeśli ciągi znaków nie są równe

Przykład:

Metoda String równa się () w Javie

Jawa




jaki jest rozmiar ekranu mojego komputera

public> class> Test {> >public> static> void> main(String[] args)> >{> >Thread t1 =>new> Thread();> >Thread t2 =>new> Thread();> >Thread t3 = t1;> >String s1 =>new> String(>'GEEKS'>);> >String s2 =>new> String(>'GEEKS'>);> >System.out.println(t1 == t3);> >System.out.println(t1 == t2);> >System.out.println(s1 == s2);> >System.out.println(t1.equals(t2));> >System.out.println(s1.equals(s2));> >}> }>

>

>

Wyjście:

true false false false true>

Wyjaśnienie: Tutaj używamy metody .equals, aby sprawdzić, czy dwa obiekty zawierają te same dane, czy nie.

  • W powyższym przykładzie tworzymy 3 obiekty Thread i 2 obiekty String.
  • W pierwszym porównaniu sprawdzamy, czy t1 == t3, czy nie. Jak wiemy oba t1 i t3 wskazują na ten sam obiekt . Dlatego zwraca wartość true.
  • W drugim porównaniu używamy operatora == do porównywania obiektów typu String, a nie zawartości obiektów. Tutaj oba obiekty są różne, dlatego wynik tego porównania jest fałszywy.
  • Kiedy porównujemy 2 obiekty String za pomocą operatora równości(), sprawdzamy, czy oba obiekty zawierają te same dane, czy nie.
  • Obydwa obiekty zawierają ten sam ciąg znaków, czyli GEEKS. Dlatego zwraca wartość true.

Przeczytaj także:

  • Metoda Character.equals() w Javie z przykładami
  • ==, równa się(), porównaj(), RówneIgnoreCase() i porównaj()

Wniosek

Zarówno metoda Java string równa się (), jak i operator == są używane do porównywania ciągów w Javie. W tym samouczku omówiliśmy na przykładach metody ==operator i String Equals() w Javie.

  Read More     String Methods in Java>

Różnica pomiędzy metodą == i .equals() – często zadawane pytania

1. Jaka jest różnica między str1 == str2 i str1 równa się str2?

W Javie str1==str2 zwróci wartość true, jeśli str1 i str2 są ciągami znaków o tej samej treści. Dzieje się tak, ponieważ ciągi znaków o tej samej treści są przechowywane w tym samym miejscu.

str1.equals(str2) zwróci wartość true, jeśli str1 i str 2 są różnymi obiektami łańcuchowymi, ale mają tę samą treść.

2. Jaka jest różnica między == a równością w porównaniu ciągów?

The metoda string równa się(). porównuje dwa ciągi i zwraca wartość true, jeśli wszystkie znaki w obu ciągach pasują, w przeciwnym razie zwraca wartość false.

Operator == porównuje lokalizację odniesienia lub pamięci obiektów na stercie, niezależnie od tego, czy wskazują one na tę samą lokalizację, czy nie.

3. Jakie zasady obowiązują w metodzie równości()?

  1. refleksyjność: Dla dowolnego obiektu x funkcja x.equals(x) powinna zawsze zwracać wartość true.
  2. Symetria : Jeśli x.equals(y) zwraca wartość true, wówczas y.equals(x) również musi zwracać wartość true.
  3. Przechodniość : Jeśli oba x.equals(y) i y.equals(z) są prawdziwe, to x.equals(z) również musi być prawdziwe.
  4. Konsystencja : Wielokrotne wywołania x.equals(y) powinny zwrócić ten sam wynik.
  5. Nieważność: Metoda równości() nigdy nie powinna zwracać wartości true w porównaniu z wartością null.