본문 바로가기

Java

.equals() - String

기본 자료형을 비교할 때   ==
String 값을 비교할 때  equals.() - 다른 언어에는 없고 자바만 가지고 있음.

 

* String(자바만의 기법)

- new 생략 가능.

- new 생략 시 : heap인데 heap안의 다른 공간에 뜸 => StringConstant(상수)Pool

같은 String일 시 같은 공간을(같은 주소) 부여함. -> 공간 절약 됨.

but / data를 계속 더한다면 -> 그때마다 공간새로 생김. -> 이때는 heap을 사용하는 것이 조금 더 효율적. (그 공간에서 수정하기 때문에)

=> history를 알고 싶다면 배열로 저장해야 함.

* 문자열 비교할 때 사용 : equals(2중 비교) => 안전함

- ==비교 : value 값이 동일하거나 동일하지 않거나. 끝.

- equals 비교 : ==으로 비교했을 때 동일하지 않으면 포인터가 가르키는 값까지 비교함.

둘 중에 하나면 참이라면 true

 

package array03;

public class StringEx01 {

	public static void main(String[] args) {
		String s1 = new String("나무");
		String s2 = new String("나무");

		System.out.println(s1==s2);
		
		String s3 = "나무";
		String s4 = "나무";
		
		System.out.println(s3==s4);
		
		//s1,s2,s3,s4 전부 주소를 가져요.
		//s3, s4는 같은 주소를 가져요. 이유는 둘다 String Constant Pool에 뜨니까.
		
		System.out.println(s1==s4);
		
		System.out.println(s1.equals(s4));
		
		//문자열 비교할 때 equals를 쓰세요!		
	}
}