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);
System.out.println(s1 == s4);
System.out.println(s1.equals(s4));
}
}
String은 첫글자가 대문자이기때문에 클래스다
하지만 String s = new String("나무");
->heap에 만들어짐
값을 바꿔도 주소가 그대로 값만 바뀐다
String s = "나무";
-> StringConstantPool에 만들어짐
String은 heap안의 StringConstantPool에 저장된다(자바만의 특징)
heap과 다르게
StringConstantPool에 같은 값이 있는지 찾고
있다면 같은 주소를 저장하고
없다면 새로운 주소를 만들어서 저장
String s = "나무";
s = s+ "안녕";
s 주소에 넣는 것이 아니라
새로운 주소를 만들어서 저장
문자열을 계속 더하고 싶다면
새로운 주소를 만들지 않는 new로 바꿔서 사용하는 것이 좋다
check.equals("n")
는 처음에 == 으로 값을 비교하고 같으면 break
주소값이면 주소로 찾아가 서로 비교함.
'Programming Language > Java' 카테고리의 다른 글
200323 // STACK, 표현식, DAEMON (0) | 2020.03.23 |
---|---|
이클립스 run 설정 (0) | 2020.03.23 |
자바for문 2의 승수 구하기, 구구단 (0) | 2020.03.23 |
자바 value passing, reference passing (0) | 2020.03.23 |
자바 static, heap, stack 영역 구분 (0) | 2020.03.20 |