Java 06 배열

헤이즐·2022년 5월 13일
0

배열이란?

배열은 같은 형태의 변수를 하나로 정리한 것
앞으로 자바 프로그래밍에 있어서 잘 다뤄야하는 개념 중 하나이다
배열을 이용하면 코드가 훨씬 간략해지고 가독성이 자체도 올라가기 때문이다

배열의 선언과 영역 확보

배열의 선언은 간단하다

자료형[] 배열명;
배열명 = new 자료형명[요소수];
ex >
int[] jasonAPT;
jasonAPT = new int[3];

배열명을 선언 뒤 new 연산자를 선언하면 된다.
하여 해당 배열변수는 값이 들어가 있는 위치를 참조하게 된다.
중요한 것은 배열의 시작은 항상 [0]이라는 것이다.
첫번째 배열 요소수를 선언하고 싶을 경우에는 배열명[0]을 호출해줘야한다.
또한 배열의 길이를 바꾸고 싶은 경우는
일단 기억영역을 확보하면 변경할 수 없기에 새롭게 자료형명과 배열수를 선언해야 한다.

선언과 확보를 동시에 하는 것도 가능한데, 해당 선언은 이렇게 한다.

자료형명[] 객체명 = new 자료형[요소수]
ex >
int[] jasonAPT = new int[3];

배열의 요소에 값의 대입

배열명[요소수] = 값
ex >
jasonAPT[0] = 3;

배열 초기화 방법

ex>
int[] jasonAPT = { 3, 1, 10 }

int[] jasonAPT = new int[3];
jasonAPT[0] = 3;
jasonAPT[1] = 1;
jasonAPT[2] = 10;

배열 요소값 변경

ex>

public class ChangeArrayElement1 {

    public static void main(String[] args) {

        // 주거년수를 관리하기 위한 배열변수 선언과 요소의 초기화
        int[] jasonAPT = { 3, 1, 10 };

        System.out.println("0호 거주년수 : " + jasonAPT[0]);
        System.out.println("1호 거주년수 : " + jasonAPT[1]);
        System.out.println("2호 거주년수 : " + jasonAPT[2]);

        // 일부 배열요소에 값을 할당
        jasonAPT[1] = 2;

        System.out.println();
        System.out.println(" - 변경후 거주년수 - ");

        System.out.println("0호 거주년수 : " + jasonAPT[0]);
        System.out.println("1호 거주년수 : " + jasonAPT[1]);
        System.out.println("2포 거주년수 : " + jasonAPT[2]);
    }
}

배열 변수끼리 대입

변수와 마찬가지로 배열 변수 또한 다른 배열 변수에 할당할 수 있다.
다만 변수와 달리 배열은 그 배열 변수의 주소가 복사된다.

배열명 B = 배열명 A;
jasonAPTB = jasonAPTA

public class ChangeArrayElement2 {

    public static void main(String[] args) {

        // 음료가격을 관리하는 배열 jasonPrice의 선언과 요소 초기화
        int[] jasonPrice = { 3000, 4000, 5000 };

        // 음료 가격을 관리하는 배열 gangnamPrice를 선언하고 배열 jasonPrice로 초기화
        int[] gangnamPrice = jasonPrice;

        System.out.println("===== 홍대점 ===== ");
        System.out.println("차  :" + jasonPrice[0] + "원");
        System.out.println("홍차 :" + jasonPrice[1] + "원");
        System.out.println("커피 :" + jasonPrice[2] + "원");

        System.out.println("===== 강남점 =====");
        System.out.println("차  :" + gangnamPrice[0] + "원");
        System.out.println("홍차 :" + gangnamPrice[1] + "원");
        System.out.println("커피 :" + gangnamPrice[2] + "원");

        System.out.println();
        System.out.println("가격 변경 후");

        // 강남점의 차 가격 변경
        gangnamPrice[1] = 4500;

        System.out.println("===== 홍대점 =====");
        System.out.println("차  :" + jasonPrice[0] + "원");
        System.out.println("홍차 :" + jasonPrice[1] + "원");
        System.out.println("커피 :" + jasonPrice[2] + "원");

        System.out.println("===== 강남점 =====");
        System.out.println("차  :" + gangnamPrice[0] + "원");
        System.out.println("홍차 :" + gangnamPrice[1] + "원");
        System.out.println("커피 :" + gangnamPrice[2] + "원");
    }
}

배열의 요소를 복사하는 방법

배열의 요소값을 공유하지 않고 복사하는 방법도 있다. 이를 위해서는 요소의 인덱스를 지정해야한다.

배열명D[배열요소수] = 배열명C[배열요소수];
jasonAPTD[0] = jasonAPTC[0];

    public static void main(String[] args) {

        // 음료가격을 관리하는 배열 jasonPrice의 선언과 요소 초기화
        int[] jasonPrice = { 3000, 4000, 5000 };

        // 음료가격을 관리하는 배열 gangnamPrice를 선언하고 배열 jasonPrice의 각 요소로 초기화
        int[] gangnamPrice = new int[3];

        gangnamPrice[0] = jasonPrice[0];
        gangnamPrice[1] = jasonPrice[1];
        gangnamPrice[2] = jasonPrice[2];

        System.out.println("===== 홍대점 ===== ");
        System.out.println("차  :" + jasonPrice[0] + "원");
        System.out.println("홍차 :" + jasonPrice[1] + "원");
        System.out.println("커피 :" + jasonPrice[2] + "원");

        System.out.println("===== 강남점 =====");
        System.out.println("차  :" + gangnamPrice[0] + "원");
        System.out.println("홍차 :" + gangnamPrice[1] + "원");
        System.out.println("커피 :" + gangnamPrice[2] + "원");

        System.out.println();
        System.out.println("가격변경 후");

        // 강남점의 차 가격 변경
        gangnamPrice[1] = 4500;

        System.out.println("===== 홍대점 =====");
        System.out.println("차  :" + jasonPrice[0] + "원");
        System.out.println("홍차 :" + jasonPrice[1] + "원");
        System.out.println("커피 :" + jasonPrice[2] + "원");

        System.out.println("===== 강남점 =====");
        System.out.println("차  :" + gangnamPrice[0] + "원");
        System.out.println("홍차 :" + gangnamPrice[1] + "원");
        System.out.println("커피 :" + gangnamPrice[2] + "원");
    }
}

⭐포인트

배열 변수에 다른 배열 변수를 대입하면, 각각은 같은 실체를 참조 (공유) 한다.
배열의 요소 값을 복사하려면 대상 인덱스로 지정한다.

배열의 길이 얻는 법

배열의 길이를 알고 싶은 경우는 배열의 length 라고 하는 속성을 사용해 취득할 수가 있다.

배열명.length
jasonAPT.length

ex>

public class ArrayLength {

    public static void main(String[] args) {
        // 배열변수선언과 요소 만들기
        int[] intArray = new int[3];

        System.out.println("intArray요소수 :、" + intArray.length);
    }
}

result>

int[] intArray = new int[3];

배열과 반복처리의 조합

배열을 for문과 조합하면 배열의 특성을 살린 효울적인 프로그램을 만들 수 있다.
배열의 인덱스에는 변수를 사용할 수 있으므로 반복문으로 취급하는 카운터 변수도 배열의 인덱스로서 이용할 수 있다.
아래 구문은 배열과 반복문을 결합하여 배열 변수 array의 모든 요소를 표시하는 프로그램의 일부이다.

int[] array = {3, 5, 10};
for(int i=0; i < array.length; i++) {
   System.out.println("array[" + i + "]로 " + array[i]);
}

카운터 변수를 0으로 초기화하고 "i가 배열의 길이보다 작다"라는 조건식을 설정하는 것으로
카운터 변수 i는 배열 변수 array의 모든 요소의 인덱스로 사용 가능하다.
첫번째 요소의 인덱스는 0이고 가장 마지막 요소의 인덱스는 배열의 길이 -1이기 때문이다.

다차원 배열

2차원 배열의 선언

[예시]
int[][] jasonAPT = new int[4][3];
자료형[][] 배열명 = new 자료형명[1차원배열요소수][2차원배열요소수];

<이중반복과 2차원 배열을 조합하여 만드는 구구단 프로그램>

public class TwoDimensionArrayWithKukuDan {

    public static void main(String[] args) {

        // 구구단 답을 관리하기 위한 2차원 배열 
        int[][] kukuDan = new int[9][9];

        for(int dan = 0; dan < 9; dan++) {
            for(int i = 0; i < 9; i++) {
                kukuDan[dan][i] = (dan + 1) * (i + 1);
            }
        }

        for(int dan = 0; dan < 9; dan++) {
            System.out.print((dan + 1) + "단 : ");
            for(int i = 0; i < 9; i++) {
                System.out.print(kukuDan[dan][i] + "\t");
            }
            System.out.println();
        }
    }
}

다차원 배열의 요소 초기화

자료형명[][] 배열명 = {
{값, 값, … },
{값, 값, … }
};
int[][] jasonAPT = {
{3, 1, 10},
{1, 3, 6 }
};

public class TwoDimensionArrayInitializer {

    public static void main(String[] args) {

        // int형 2차원배열의 선언과 요소의 초기화 
        int[][] intArray = {
                {50,150,250},
                {300,200,100}
        };

        for(int i = 0; i < intArray.length; i++){
            for(int j = 0; j < intArray[i].length; j++){
                System.out.println("intArray["+i+"]["+j+"]값 : " + intArray[i][j]);
            }
            System.out.println();
        }
    }
}

⭐포인트
1)배열을 사용하면 같은 형태의 데이터를 정리해 관리할 수 있다.
2)순서별로 각각의 삽입물을 요소라고 부른다.
3)배열의 요소에 대한 번호를 인덱스라고합니다.
4)배열은 선언 후에 기억 영역의 수(길이)를 확보할 필요가 있다.
5)배열의 요소에 대입된 값을 취급하려면 , 인덱스를 지정한다.
6)배열 변수에 배열 변수를 대입하면, 같은 배열을 참조(공유)하게 된다.
7)반복문(특히 for문)과 배열을 조합하면 효율적인 처리가 가능하다.
8)인덱스에는 변수를 이용할 수도 있다.

profile
개발자를 꿈꾸며 하루하루 고군분투 중!

0개의 댓글