Programming/Java

동일한 문자열 비교 : String 과 new String()의 차이

joah.k 2020. 12. 7. 18:48
728x90

 

자바에서 문자열(String)을 선언하는 방법은 이렇다. 

 

1) 리터럴 변수로 바로 할당

2) 생성자인 new 연산자를 통해 할당

String name1 = "Jeong" ;
String name2 = new String ("Jeong") ; 

       

 

"Jeong" 이라는 문자는 같아 보이는데 얘네는 실제 메모리에 할당되는 영역에 차이가 있다. 

String name01 = "Jeong" ;

String name02 = "Jeong" ;


String name03 = new String ("Jeong") ; 

String name04 = new String ("Jeong") ; 

 

1. new 없이 바로 문자열을 할당하면, "Jeong" 문자열은 같은 heap 영역의 메모리를 사용한다.

System.out.println("name01==name02:" + (name01==name02)) ;  // true

 

 

2. 반면, new String()으로 생성하면 다른 heap 주소 위치에 객체가 생성된다. 

 System.out.println("name03==name04:" + (name03==name04)) ;  // false 

  즉.. 기본 데이터 유형은 동일한 값을 할당하면 true로 처리되지만,  

  객체의 경우 동일한 값을 할당하더라도 주소값이 다르기 때문에 false가 처리되는 경우가 많다

 

 

3. 동일한 문자열의 비교는 ==를 활용하면, 예외사항 때문에 문제가 발생한다.

문자열의 동등 비교는  .equals()를 활용하여 비교하여야 한다.   

System.out.println("name01.equals(name02):" + name01.equals(name02));    // true

System.out.println("name01.equals(name04):" + name01.equals(name04));    // true

System.out.println("name03.equals(name02):" + name01.equals(name04));    // true
      

 

4. 응용 )

id.equals("비교데이터1")임의의 id, pass 문자열에 데이터를 할당하고 
해당 id, pass가 동일하면 true, 그렇지 않으면 false를 처리하세요(문자열만 비교)

      String id = "blue"; 
      String pw = "767"; 
      
      
 System.out.println("인증 여부:" + (id.equals("blue")&&(pw.equals("767"))));

 

 

 

>> 그냥 이거 읽자 ^^..

coding-factory.tistory.com/536

 

[Java] 문자열 비교하기 == , equals() 의 차이점

자바에서 일반적인 데이터 타입의 비교는 ==이라는 연산자를 사용하여 비교합니다. 하지만 String 문자열의 값을 비교할때에는 ==이 아닌 equals()라는 메소드를 사용하여 비교를 합니다. equals와 ==

coding-factory.tistory.com

 

 

 

728x90