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));

    }
}

+ Recent posts