블로그 이미지
잡초 개발자의 좌충우돌 이야기 yysvip

카테고리

분류 전체보기 (211)
Java Programing (24)
Web Programing (20)
Database (36)
Tool (46)
까칠한 IT (27)
까칠한 정보 (42)
까칠한 Strory (16)
까칠한 Project (0)
Total1,164,621
Today23
Yesterday4,565

달력

« » 2018.12
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

공지사항

Java string(문자열) 비교 ==, equals 의 차이

  까칠한 남자 Strory       yysvip.tistory.com       잡초 개발자 까찰한 쑤의 좌충우돌 개발 이야기

 

== 는 선언된 변수가 참조하는 메모리 주소를 비교
equals()는 선언된 변수의 값을 비교함

예제) 

public class StringCompare {  
   public static void main(String[] args)  {  
      String str1 = "자바" ;  
      String str2 = "자바" ;  
    
      String str3 = new String("자바") ;  
      String str4 = new String("자바") ;  
    
      System.out.println("==로 변수의 참조 주소값 비교 결과") ; 
   
      if (str1 == str2) { 
         System.out.println("객체 참조 변수 str1과 str2는 같다.") ; 
      } 
      else 
         System.out.println("객체 참조 변수 str1과 str2는 다르다.") ; 
   
      if (str3 == str4) { 
         System.out.println("객체변수 str3과 str4는 같다.") ; 
      } 
      else 
         System.out.println("객체변수 str3과 str4는 다르다.") ; 
   
      System.out.println("\nequals() 내용비교 결과") ; 
   
      if (str1.equals(str2)) { 
         System.out.println("객체 참조 변수 str1과 str2는 같다.") ; 
      } 
      else 
         System.out.println("객체 참조 변수 str1과 str2는 다르다.") ; 
   
      if (str3.equals(str4)) { 
          System.out.println("객체변수 str3과 str4는 같다.") ; 
      } 
      else 
         System.out.println("객체변수 str3과 str4는 다르다.") ; 
   
         System.out.println() ;   
   } 
}


java에서는 선언된 변수의 값이 같으면 같은 메모리를 참조하기 때문에 == 를 사용해서 비교를 하면 true가 나오지만  

new String()을 통해서 생성된 변수는 값이 같아도 새로 생성된 메모리 주소를 참조하기 때문에

== 를 사용해서 비교하면 false가 나오는것.

참조하는 메모리 주소가 달라도 값 자체를 비교하는 equals()는 전부 true가 나온다.

간단하고 기본적인 내용이지만 쉽게 지나칠수 있는 사항.

Posted by yysvip

최근에 달린 댓글

최근에 받은 트랙백

글 보관함