자바 배열

sjhello·2020년 11월 3일
0

배열

하나의 변수에 한 가지 타입에 대해 여러 개의 데이터를 넣을 수 있는 자료구조이자, 참조 자료형

인덱스(index)

배열안에 데이터를 넣고자 할때 위치를 지정할때 사용, 여기서 위치가 인덱스 배열의 인덱스는 항상 0부터 시작 한다

// 선언
int [] array;       // 배열 선언 시 권장되는 스타일
int array2 [];
int [] array3 = {1,2,3,4,5};

// 초기화
array = new int[7];     // array 라는 배열에 0 ~ 6 인덱스가 생김

for(int i = 0; i < 6; i++) {
    array[i] = i;
    System.out.println("array = " + array[i]);  // 0, 1, 2, 3, 4, 5, 6
}

배열에서의 예외(ArrayIndexOutOfBoundException)

int [] array = new int[7];

for(int i = 0; i < 6; i++) {
    array[i] = i;
    System.out.println("array = " + array[i]);  // 0, 1, 2, 3, 4, 5, 6
}
array[7] = 7;    // ArrayIndexOutOfBoundException

배열이 가지고 있는 인덱스를 넘어선 곳에 값을 할당하거나, 값을 참조할때 발생하는 에러(위 코드에서 array는 0 ~ 6까지의 인덱스를 가지고 있다)

여기서 알 수 있는 점은 배열을 초기화 한 후에는 배열의 인덱스를 늘릴 수 없다는 것이다(다시 초기화 하는 경우는 제외)

기본 자료형과 참조 자료형 배열에 대한 기본값

참조 자료형의 기본값은 null
null 이란 값이 아무것도 있지 않은 상태를 의미한다

공통의 값이 필요할때는 static을 사용하자

public class KoreaPeople { // 한국사람의 모든 국적은 한국 즉 나라 정보는 공통의 값
    static String country = "korea";

    public static void main(String[] args) {
        KoreaPeople a = new KoreaPeople();
        KoreaPeople b = new KoreaPeople();

        System.out.println("a: " + a.country);
        System.out.println("b: " + b.country);

        // static 변수 변경
        a.country = "south korea";

        // a의 country 값을 변경하였지만 b의 country값도 변경됨
        System.out.println("a: " + a.country);
        System.out.println("b: " + b.country);
    }
}

static은 변수나 메서드에서 사용할 수 있으며 프로그램의 시작과 동시에 메모리에 올라간다(인스턴스를 생성하지 않고도 사용가능) 프로그램 종료시점에 메모리에서 해제된다

너무 많은 static 변수를 사용하게 되면 시스템의 속도 저하를 일으킨다

변하지 않는 일정한 값, 여러 곳에서 쓰이는 설정 등 공통 정보를 표현할때 사용

2차원 배열

// 2차원 배열 선언과 초기화
int [][] arr;
arr = new int[2][];

// 2차원 배열안의 배열 초기화
arr[0] = new int[3];
arr[1] = new int[3];

int [][] arr2 = {{1,2,3}, {4,5,6}};

// int [] arr3 [] = {{1,2,3}, {4,5,6}}; 문법상의 에러는 없지만 권장되지 않는 스타일

배열의 길이 정보 length

length는 배열의 마지막 인덱스 + 1 만큼의 int형 숫자를 return한다

int [] arr = {1,2,3,4,5};    // 0 ~ 5의 index를 가지는 배열
System.out.println(array.length);    // 6

배열을 위한 for 문(향상된 for 문)

int [] arr = {1,2,3,4,5};    // 0 ~ 5의 index를 가지는 배열
for (int num : arr) {        // for (declaration : expression)
    System.out.println(num);
}

JDK 5 버전 부터 향상된 for문을 지원, 소괄호 부분에는 for문에서 사용할 declaration 부분과 expression(배열 혹은 List와 같은 일부 Collection 객체)를 사용할 수 있다
일반적인 for문 처럼 배열의 인덱스에 직접적으로 접근하여 배열의 원소값을 수정할 순 없고 주로 값을 읽어들이는 용도로 사용한다

0개의 댓글