basic/java 이론

day06 - 배열 array

못지(Motji) 2021. 4. 28. 17:56

배열 array

• 같은 타입의 여러 변수를 합쳐놓은 것 (다른타입을 같이 넣을 수 없음)

• 데이터공간 수정/변경이 어렵다

• 변수==단독주택, 배열==아파트

• 배열을 쓰고싶으면 선언과 생성이 필수

 

✔ 선언

변수 : 타입 변수이름;
배열 : 타입[] 변수이름; 타입 변수이름[];로도 가능 하지만 첫번째 타입을 많이씀
Ex) int[] score; == int score[];

Ex)

타입 : 배열에 저장될 데이터 타입으로 해당 타입의 데이터만 저장 기능

[] : 배열 선언

변수이름 : 배열의 이름, 배열에 대한 레퍼런스(참조) 변수

 

☑ 선언만으로는 배열에 저장할 수 있는 공간이 할당 되지 않으며, score라는 변수만 생김.

☑ 레퍼런스 변수는 배열 공간에 대한 주소값(레퍼런스값)을 가지며, 그자체가 배열은 아니다.

☑ 배열공간이 생성되지 않았으므로 선언만 할시, 레퍼런스 변수의 초기값은 null이다.

💡 레퍼런스 : 배열의 주소

💡 레퍼런스 변수: 배열의 실제 저장된 주소를 저장하는 변수

☑ 선언시, [] 안에 크기가 아직 저장되지 않은 상태

 

✔ 생성

변수 = new 타입[길이];
int[] score; //선언
// 위 선언한 score 변수에 맞게, 5개 저장공간 만들어보자
score = new int[5]; // 메모리 공간 생성 int크기만큼 방 다섯개 만들어줘

☑ socre : 배열의 레퍼런스 변수 : 실제 5개의 제이터들이 저장될 메모리의 주소를 저장하는 변수

☑ new : 메모리 생성 키워드

☑ int : 배열의 타입 : 실제 데이터 1개가 저장될 수 있는 크기(타입)

☑ [5] : 배열 방의 개수

 

❗ 배열은 new 키워드를 이용하여 메모리를 할당해야 비로서 사용가능하다.

 

◼ 배열 생성 후 새로운값 저장
◻변수[인덱스]=값;

 

✔ 초기화

• 생성시 처음 들어가는 값을 초기값이라 한다.

Ex)

int[] score = {10, 20, 30, 40, 50}; // int 타입 배열 방 5개짜리 만들어 값 순서대로 저장
int[] score = new int[]{10,20, 30, 40, 50};

☑ 주의할 점, 선언과 초기화를 따로 분리시키면 에러!

int[] score;
score = {1, 2, 3, 4, 5}; (x)
socre = new int[5];
socre[0] =1;
...
int[] score = new int[5];

 

✔ index 인덱스

• 프로그램에서는 숫자가 0부터 시작.

• 배열의 방은 0부터 시작하는 방번호가 매겨진다. > 자동으로

• 인덱스를 이용하여 배얄의 각각 방에 접근 가능. ( 저장, 꺼내기)

레퍼런스변수[인덱스];
score[0] >첫번째 방

 

💡 .length

◻ 배열의 길이(방의개수)를 알려주는 명령어

Ex)

int[] score = new int[5];

System.out.println(score.length) >> 5

 

• 배열은 연속되는 숫자를 방번호로(인덱스) 갖고 있어서 반복문과 함께 자주 쓰인다.

  (for문의 i를 인덱스로 활용)

• 레퍼런스 치환과 배열 공유 : 레퍼런스 변수와 배열 공간(실제 데이터 저장공간)이 분리 되어있어서 다수의 레퍼런스 변수가 하나의 배열 공간을 가르키는 배열 공유가 가능