신입개발자

문자열2 본문

프로그래밍 언어/자바

문자열2

dks_a 2022. 5. 8. 18:19
package pk20;

import java.util.Arrays;

public class 문자열2 {

	public static void main(String[] args) {
		// 일반적으로 참조형의 복사는 주소복사이므로 내용 수정시 공유된다
		// 그러나 문자열 참조형은 내용 수정이 불가능하여 수정시 새주소의 문자열을 만든다
		
		//A) 배열 참조형의 주소복사와 수정
		int[] a1 = new int[] {10,20,30};
		int[] a2 = a1; // 배열복사는 주소복사
		System.out.println("a1 = " +Arrays.toString(a1)); //[10, 20, 30]
		System.out.println("a2 = " +Arrays.toString(a2)); //[10, 20, 30] a1의 힙 내용을 공유
		a2[0] = 40;
		a2[1] = 50;
		a2[2] = 60;
		System.out.println("a1 = " +Arrays.toString(a1)); //[40, 50, 60]
		System.out.println("a2 = " +Arrays.toString(a2)); //[40, 50, 60], a1과 a2는 힙내용을 공유
		System.out.println();
		
		//B) 문자열 참조형의 주소복사와 수정 불가로 인한 새 문자열 생성
		String s1 = new String("Hello");
		String s2 = s1; // 주소복사
		System.out.println("s1 = " + s1); //Hello
		System.out.println("s2 = " + s2); //Hello, 같은 주소 공유
		s1 = "world"; // 문자열은 수정되지 않는다!! 다만 새문자열을 만들뿐..
		System.out.println("s1 = " + s1); //world, 새공간의 주소가 할당되었다.
		System.out.println("s2 = " + s2); //Hello, 주소가 달라 더이상 공유되지않는다
		
		
	}

}

 

'프로그래밍 언어 > 자바' 카테고리의 다른 글

문자열메소드1  (0) 2022.05.08
문자열3  (0) 2022.05.08
문자열1  (0) 2022.05.08
다차원배열4  (0) 2022.05.08
다차원배열3  (0) 2022.05.08
Comments