logo

Java에서 == 및 .equals() 메소드를 사용하여 문자열을 비교하는 것의 차이점

둘 다 같음() 메서드 그리고 == 연산자 Java에서 두 객체를 비교하는 데 사용됩니다.

그만큼 Java 문자열 equals() 메소드 , 두 문자열을 비교하여 두 문자열 모두에서 모든 문자가 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.



그만큼 == 연산자 동일한 위치를 가리키는지 여부에 관계없이 힙에 있는 객체의 참조 또는 메모리 위치를 비교합니다.
연산자를 사용하여 객체를 생성할 때마다 새로운 , 이는 새로운 메모리 위치 그 대상을 위해. 그래서 우리는 == 연산자를 사용하여 두 객체의 메모리 위치나 주소가 동일한지 여부를 확인합니다.

일반적으로 equals() 및 == 연산자는 모두 자바 객체를 비교하여 동등성을 확인하는 데 사용되지만 다음은 둘 사이의 몇 가지 차이점입니다.

  1. 주요 차이점은 .equals() 메소드 그리고 == 운영자 하나는 메서드이고 다른 하나는 연산자라는 것입니다.
  2. 참조 비교를 위해 == 연산자를 사용할 수 있습니다( 주소 비교 ) 및 .equals() 메소드 내용 비교 . 간단히 말해서 ==는 두 객체가 동일한 메모리 위치를 가리키는지 확인하는 반면 .equals()는 객체의 값 비교를 평가합니다.
  3. 수업이 이루어지지 않는 경우 같음 메서드를 재정의합니다. , 기본적으로 이 메서드를 재정의한 가장 가까운 상위 클래스의 equals(Object o) 메서드를 사용합니다. **보다 왜 equals(Object) 및 hashCode() 메소드를 재정의해야 합니까? 상세히.

예:

Java의 String equals() 메소드 및 == 연산자.



자바






// 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> >}> }>

>

>

산출

true false true true>

설명: 여기서는 s1과 s2라는 두 개의 개체를 만듭니다.

연도를 분기로
  • s1과 s2는 모두 동일한 객체를 참조합니다.
  • s1과 s2 비교에 == 연산자를 사용하면 둘 다 동일한 주소를 가지므로 결과는 참입니다. 일정한 풀.
  • 같음을 사용하면 s1과 s2에 지정된 값만 비교하기 때문에 결과는 참입니다.

자바 문자열 풀

s1 = 안녕하세요

s2 = 안녕하세요

자바 힙

s3 = 안녕하세요

두 연산자를 자세히 이해해 보겠습니다.

항등 연산자(==)

부울 유형을 포함하여 모든 기본 유형에 동등 연산자를 적용할 수 있습니다. 객체 유형에 동등 연산자를 적용할 수도 있습니다.

특수문자다

예:

== 자바의 연산자.

자바




// 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>);> >}> }>

>

>

산출

false false true true>

객체 유형에 ==를 적용하면 인수 유형 간 호환성이 있어야 합니다. (자녀에서 부모로, 부모에서 자식으로 또는 동일한 유형). 그렇지 않으면 컴파일 타임 오류가 발생합니다.

예:

자바




// 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);> >}> }>

Desktop.ini가 뭐죠?

>

>

산출:

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

Java 문자열은 같음() 메서드

자바에서는 문자열은 같음() 메서드 문자열의 데이터/내용을 기반으로 주어진 두 문자열을 비교합니다. 두 문자열의 내용이 모두 동일하면 true를 반환합니다. . 모든 문자가 일치하지 않으면 거짓을 반환 .

통사론:

통사론 : 공개 부울은 같음(객체 anotherObject)

매개변수 :

  • anotherObject- 비교할 문자열

보고:

  • 부울 값 :
    • 진실- 문자열이 동일한 경우
    • 거짓- 문자열이 같지 않은 경우

예:

Java의 문자열 equals() 메소드

자바




문자를 문자열로

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));> >}> }>

>

>

산출:

true false false false true>

설명: 여기서는 .equals 메소드를 사용하여 두 객체가 동일한 데이터를 포함하는지 여부를 확인합니다.

  • 위의 예에서는 Thread 개체 3개와 String 개체 2개를 만듭니다.
  • 첫 번째 비교에서는 t1 == t3인지 여부를 확인합니다. 우리 둘 다 알고 있듯이 t1과 t3은 다음을 가리킨다. 같은 물건 . 이것이 true를 반환하는 이유입니다.
  • 두 번째 비교에서는 객체의 내용이 아닌 문자열 객체를 비교하기 위해 == 연산자를 사용합니다. 여기서는 두 개체가 모두 다르기 때문에 비교 결과는 False입니다.
  • equals() 연산자로 2개의 String 객체를 비교할 때 두 객체 모두 동일한 데이터를 포함하는지 여부를 확인합니다.
  • 두 개체 모두 동일한 문자열, 즉 GEEKS를 포함합니다. 이것이 true를 반환하는 이유입니다.

또한 읽어보세요:

  • 예제가 포함된 Java의 Character.equals() 메서드
  • ==, equals(), CompareTo(), equalsIgnoreCase() 및 Compare()

결론

Java 문자열 equals() 메소드와 == 연산자는 둘 다 Java에서 문자열을 비교하는 데 사용됩니다. 이 튜토리얼에서는 예제를 통해 Java의 ==연산자와 String equals() 메소드를 다루었습니다.

  Read More     String Methods in Java>

== 메소드와 .equals() 메소드의 차이점 - FAQ

1. str1 == str2와 str1이 str2와 같음의 차이점은 무엇입니까?

Java에서 str1==str2는 str1과 str2가 동일한 내용을 가진 문자열인 경우 true를 반환합니다. 이는 동일한 내용의 문자열이 동일한 위치에 저장되기 때문입니다.

str1.equals(str2)는 str1과 str 2가 다른 문자열 객체이지만 내용이 동일한 경우 true를 반환합니다.

2. 문자열 비교에서 ==와 같음의 차이점은 무엇입니까?

그만큼 문자열은 같음() 메서드 두 문자열을 비교하여 두 문자열 모두에서 모든 문자가 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

== 연산자는 동일한 위치를 가리키는지 여부에 관계없이 힙에 있는 객체의 참조 또는 메모리 위치를 비교합니다.

3. equals() 메소드의 규칙은 무엇입니까?

  1. 반사성: 모든 객체 x에 대해 x.equals(x)는 항상 true를 반환해야 합니다.
  2. 대칭 : x.equals(y)가 true를 반환하면 y.equals(x)도 true를 반환해야 합니다.
  3. 전이성 : x.equals(y)와 y.equals(z)가 모두 참이면 x.equals(z)도 참이어야 합니다.
  4. 일관성 : x.equals(y)를 여러 번 호출하면 동일한 결과가 반환되어야 합니다.
  5. 무효가 아님: equals() 메서드는 null과 비교할 때 true를 반환해서는 안 됩니다.