JAVA 자료형비교 정리

lgw2236·2022년 11월 28일
0

Java

목록 보기
2/8
post-thumbnail

■ 주소값 비교(==)와 값 비교(equals)

== 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하지만,
String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다.

== 예시 )
public class exCompare {
    public static void main(String[] args) {
        String s1 = "birthDay";
        String s2 = new String("birthDay");
		
        if(s1 == s2) {
            System.out.println("==");
        } else {
            System.out.println("!=");
        }
    }
}

위 코드를 실행해보면 '!='이 출력된다.
참조 타입의 변수의 값은 힙 영역의 객체 주소이므로, 결국 주소 값을 비교하는 것이 되어
s1 과 s2는 다르다는 결과값을 뱉기 때문이다.

equals 예시 )
public class exCompare {
    public static void main(String[] args) {
        String s1 = "birthDay";
        String s2 = new String("birthDay");
		
        if(s1.equals(s2)) {
            System.out.println("equals");
        } else {
            System.out.println("!equals");
        }
    }
}

equals의 경우에는 데이터값을 비교하기 때문에
어떻게 String을 생성하느냐에 따라 결과가 달라지지 않고 정확한 비교를 할 수 있다.
그러므로 해당 코드를 출력해보면 equals 가 출력된다.

■ 문자열 비교 compareTo()

compareTo()은 두개의 문자열을 비교한다.
동일한지의 여부만 확인할 수 있는 equals()와 다르게 값의 순서도 리턴해 준다.
그렇기 때문에 compareTo()를 이용하면 리스트를 오름차순으로 정렬하거나 내림차순으로 정렬할 수 있다.
리턴 값은 0, 음수, 양수의 int가 리턴되며 의미는 다음과 같다.

  • 0 : 두개의 문자열이 동일
  • 양수 : compareTo()를 호출하는 객체가 인자보다 순서가 앞설 때
  • 음수 : 인자가 객체보다 순서가 앞설 때
profile
어제보다 오늘 더

0개의 댓글