반응형

 

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

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형