import java.util.Arrays;
public class session1 {
public static void main(String[] args) {
/*
변수: 이름을 지정하고 값을 입력/산출하기 위한 수
int number;
int number1, number2, number3, ...
Array: 배열
동일한 자료형(변수들)의 묶음.
접근의 요소로 index(번호)로 접근한다.
변수의 확장 버전
형식:
자료형 변수명[] = new 자료형[배열의 총 수];
*/
int[] array = new int[3]; // 동적할당 (<-> 정적할당)
// int array[] = new int[3];
// int []array = new int[3];
System.out.println(array[1]);
array[0] = 11;
array[1] = 22;
array[2] = 33;
// 가비지콜렉터 delete[] int;
// 접근 방법
System.out.println(array[0]);
// 배열의 개수
System.out.println(array.length);
// 배열을 출력
System.out.println(array);
// [I@776ec8df => @이하부터 숫자: Heap 영역의 주소 => os가 할당한 것
// 77 63 c8 df (32 bit = 4 byte)
// 255 -> ff
System.out.println(Arrays.toString(array)); // 배열을 눈으로 확인하는 용도
// 배열의 초기화
// int[] nArray = new int[5];
// System.out.println(Arrays.toString(nArray)); // 지정된 요소 없으면 0으로 초기화
// 배열의 초기화 (2)
int[] nArray = { 10, 20, 30, 40, 50 };
System.out.println(Arrays.toString(nArray));
System.out.println(nArray[2]);
System.out.println(nArray.length);
int length = 5;
int[] numArray = new int[length];
// 배열의 초기화 (3) - null로 초기화
int[] numArray2 = null; // 동적 할당 -> 무조건 null -> 메모리 초기화
numArray2 = new int[length];
// 배열의 Alias(별명)
int[] arrayBase = { 1, 2, 3 };
int[] arrayAlias = arrayBase;
System.out.println(Arrays.toString(arrayAlias));
arrayAlias[1] = 22;
System.out.println(Arrays.toString(arrayAlias));
System.out.println(Arrays.toString(arrayBase));
// arrayAlias의 데이터를 바꾸었더니 arrayBase의 데이터도 바뀌었다.
// 별명 = 같은 사람을 지칭
// 언제 쓰이는가? 원본의 배열 이름이 너무 길 때, 줄여서 쓰고 싶을 때
int[] myCharacterPositionX = { 1,2,3 };
int[] myChPosX = myCharacterPositionX;
myChPosX[2] = 33;
System.out.println( myCharacterPositionX[2] );
// 연습
int[] myArr = new int[5];
System.out.println(Arrays.toString(myArr));
myArr = null;
System.out.println(Arrays.toString(myArr));
// 배열 교환 (temp를 이용한 swap)
int[] arrayOne = { 1, 2, 3 };
int[] arrayTwo = { 11, 22, 33 };
int[] temp;
temp = arrayOne;
arrayOne = arrayTwo;
arrayTwo = temp;
System.out.println(Arrays.toString(arrayOne));
System.out.println(Arrays.toString(arrayTwo));
}
}