Backend/Java

[Java] 문자열 비교 : ==와 equals()의 차이

unknownomad 2022. 1. 11. 23:12

== 연산자

  • 비교하고자 하는 두 개의 대상의 주소값을 비교
public class compare {
	public static void main(String[] args) {
    	
        String s1 = "abcd";
        String s2 = new String("abcd");
        
        if(s1 == s2) {
        	System.out.println("두 개의 값이 같다.");
        } else {
        	System.out.println("두 개의 값이 같지 않다.");
        }
    }
}
//결과 : 두 개의 값이 같지 않다.

 

equals()

  • String 클래스의 equals() 메소드
  • 비교하고자 하는 두 개의 대상의 값 자체를 비교(주소값 비교 X)
public class compare {
	public static void main(String[] args) {
    	
        String s1 = "abcd";
        String s2 = new String("abcd");
        
        if(s1.equals(s2)) {
        	System.out.println("두 개의 값이 같다.");
        } else {
        	System.out.println("두 개의 값이 같지 않다.");
        }
    }
}
//결과 : 두 개의 값이 같다.

 

 

기본형 참조형
* Call by Value 형태
* 기본적으로 대상에 주소값을 가지지 않는 형태
* int형, char형 등
* Call by Reference형(생성 시 주소값 부여)
* String : 일반적인 타입이 아닌 클래스

➡ String 타입 선언 시 같은 값을 부여하더라도
서로 간의 주소값이 다름

 


출처: https://coding-factory.tistory.com/536