반응형
package string;
public class StringExample {
public static void main(String[] args) {
String str1 = "박은서";
// stack에 str1이 저장되고 heap 에 string형태 박은서가 저장
String str2 = "박은서";
if (str1 == str2) { // heap영역에 박은서가 1개이고 공유함
System.out.println("참조주소값이 같다");
}else {
System.out.println("참조주소값이 다르다");
}
String str3 = new String("박은서"); // 나중에 값이 정해지는 경우
String str4 = new String("박은서");
if (str3 == str4) {
System.out.println("참조주소값이 같다");
}else {
System.out.println("참조주소값이 다르다"); //heap영역에 박은서가 2개임
}
if (str3.equals(str4)) { // 문자열값은 같음
System.out.println("str3 과 str4 는 문자열이 같음");
}
}
}
Char이라는 문자 하나만 받는 자료형이 있었죠? 그러면 문장으로 받을 수 있는 자료형은 없을까요?
만약 없다면 char를 + 로 붙혀가면서 해야하는 엄청 불편이 있습니다.
네 정답은 있습니다. String이라는 것입니다.
여기서 str1 str2를 변수라고 하지 않습니다. 객체라고 부릅니다. 그 이유는 나중에 클래스를 공부하면서 알아봅시다
객체라고 불리는 것들의 값을 비교하려면 .equals를 써야합니다. ==는 그 참조 주소값을 비교하는 걸 의미합니다.
그림으로 str1 , str2의 관계 str3 , str4의 관계를 보여드리겠습니다.
str1 과 str2는 똑같은 걸 참조하지만 str3과 str4는 다릅니다. 하지만 str3과 str4의 문자열은 같은 거죠
Heap 영역과 Stack 영역에 대해선 나중에 알려드리겠습니다.
https://github.com/SungJLee/My_Java_World.git
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 2차원 배열 (Array) (0) | 2021.06.14 |
---|---|
[Java] 자바 배열 (Array) (0) | 2021.06.13 |
[Java] 자바 반복문 탈출 (Continue , Break) (0) | 2021.06.13 |
[Java] 자바 반복문 (while , do-while) (0) | 2021.06.13 |
[Java] 자바 반복문 (for문 , 이중 for문) (0) | 2021.06.13 |