주소값을 복사한다는 의미int[] a = {1,2,3,4};
int[] b = a;
b[0] = 3;
System.out.println(a[0]);
// 3
위와 같이 b[0] = 3 을 명령했으나 b는 a 의 주소값만 복사했기 때문에 a[0]의 값도 변함
실제 값을 새로운 메모리 공간에 복사int[] a1 = { 1, 2, 3, 4 };
int[] b1 = new int[a1.length];
for (int i = 0; i < a1.length; i++) {
b1[i] = a1[i];
}
b1[0] = 3;
System.out.println(a1[0]);
// 1
반복문을 통해 a1 내부의 값을 순회하며 b1에 실제 값을 넣었기 때문에 a1[0]의 값이 유지됨
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length);
b[0] = 3;
System.out.println(a[0]);
// 1
Arrays.copyOf 메서드를 활용하면 간단하게 깊은 복사를 할 수 있다.
String str = "ABCD";
int strLength = str.length();
System.out.println("strLength = " + strLength);
// 4 : String의 길이
char strChar = str.charAt(1);
System.out.println("strChar = " + strChar);
// B : String[1]의 값
String subStr = str.substring(0, 3);
System.out.println("subStr = " + subStr);
// ABC : String을 0부터 세번째 전까지 자름
String newStr = "ABCD";
boolean strEquals = str.equals(newStr);
System.out.println("strEquals = " + strEquals);
// true : String의 비교
char[] strCharArr = str.toCharArray();
// String을 Char 배열로 변환
char[] charArr = {'A', 'B', 'C'};
String charArrayString = new String(charArr);
System.out.println("charArrayString = " + charArrayString);
// ABC : char 배열을 String 으로 변환