============================코드============================
Scanner sc = new Scanner(System.in);
System.out.print("문자열 배열 크기 입력 : ");
String[] str = new String[sc.nextInt()];
//★★★★★★★★★★★★너무너무너무너무너무 중요★★★★★★★★★★★★
String[] strCopy = str;
//★★★★★★★★★★★★너무너무너무너무너무 중요★★★★★★★★★★★★
System.out.println("str 배열 주소값 >>> " + str);
System.out.println("strCopy 배열 주소값 >>> " + strCopy);
// strCopy 배열에 초기값을 할당해보자
for(int i = 0; i < strCopy.length; i++) {
System.out.print((i+1) + "번째 문자열 입력 : ");
strCopy[i] = sc.next();
}
// str 배열에 있는 데이터를 출력해보자
for(int i = 0; i < str.length; i++) {
System.out.println("str[" + i + "] >>> " + str[i]);
}
sc.close();

**기억해둘 것
-복사된 배열은 heap 메모리 안에 있는 변수명의 주소값을 갖고 있다는 것을 기억하자! 솔직히 아직 감은 안옴..ㅎ
[문제]
키보드로 배열에 정수 데이터를 저장하고 입력된 값을 내림차순으로 정렬해보자!
============================코드============================
Scanner sc = new Scanner(System.in);
System.out.print("정수형 배열 크기 입력 : ");
int[] sort = new int[sc.nextInt()];
// 배열에 키보드로 데이터를 저장해보자
for(int i = 0; i < sort.length; i++) {
System.out.print((i+1) + "번째 정수 입력 : ");
sort[i] = sc.nextInt();
}
// 내림차순으로 정렬을 해보자 (종이에 꼭 쓰면서 이해해보자!!!)
int temp = 0;
for(int i = 0; i < sort.length; i++) {
for(int j = i+1; j < sort.length; j++) {
if(sort[j] > sort[i]) {
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}
}
}
// 내림차순으로 정렬한 sort 배열을 화면에 출력하자
for(int i = 0; i < sort.length; i++) {
System.out.print(sort[i] + "\t");
}
sc.close();

**어려웠던 점
-값의 자리를 변동하기 위해 임의의 temp변수를 만들어 활용하는 것이 바로 생각해내기에 굉장히 어려웠다..
배열의 인덱스 0과 1을 비교해 적은 값을 temp에 넣고 인덱스 0에는 더 큰 값을, 큰 값을 가졌던 인덱스의 자리에는 비교했던 적은 값을 넣는 순환이 머리로는 잘 그려지지 않아 힘들었음..ㅜ
종이에 그려가며 연습하는 것이 필요할듯 하다