기본 자료형을 비교할 때 | == |
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를 쓰세요!
}
}
'Java' 카테고리의 다른 글
String Constant Pool이란? | Java String Pool (0) | 2020.11.17 |
---|---|
while 예제 - 어떤 거리를 어떤 속도를 가진 자동차가 가는데 걸리는 시간을 구하기 / While example - How much time does it take? (0) | 2020.03.23 |
반복문 (for expression, while) (0) | 2020.03.23 |
메서드 (call by value passing, call by reference passing) (0) | 2020.03.23 |
파일명 바꾸기 // how to rename a file(.java) (0) | 2020.03.20 |