본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 배열 / 배열의 선언 / 배열 인덱스 / 배열의 길이 / 배열 초기화 / 배열의 출력 )

by ✲ 2020. 6. 25.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

 

배열 

- 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 

int score1, score2, score3, score4, score5; 

int[] score = new int[5]; 

 

배열의 선언과 생성 

배열의 선언 

- 배열을 다루기 위한 참조변수의 선언 

선언방법 선언 예
타입[] 변수이름; (주로 자바에서 많이 사용)  int[] score;
String[] name; 
타입 변수이름[]; (주로 C언어에서 많이 사용)  int score[];
String name[];

 

타입[] 변수이름;                   // 배열을 선언 (배열을 다루기 위한 참조변수 선언) 

변수이름 = new 타입[길이];    // 배열을 생성 (실제 저장공간을 생성) 

int[] score;                          // int 타입의 배열을 다루기 위한 참조변수 score 선언

score = new int[5];               // int 타입의 값 5개를 저장할 수 있는 배열 생성 

 

배열의 인덱스 

- 각 요소(저장공간)에 자동으로 붙는 (일련)번호

* 인덱스의 범위는 0부터 '배열길이-1' 까지 

int[] score = new int[5]             //길이가 5인 int 배열 (인덱스는 0 , 1, 2, 3, 4 ) 

 

 

배열의 길이 

- 배열이름.length  ( int형 상수 )

int[] arr = new int[5];               // 길이가 5인 int 배열 

int tmp = arr.length;               // arr.length의 값은 5이고, tmp에 5가 저장

* 배열은 한번 생성하면 (실행 동안) 그 길이를 바꿀 수 없다. 

예를들어 int[5]가 있다고 가정하면, integer * 5  = 4 * 5 = 20byte 

배열은 연속적이어야 하기 때문에 20byte 공간을 찾아야함. 

공간에 배열을 만들었는데, 공간이 더 필요해서 int[10]으로 늘린다고 하면 

integer * 10 = 4 * 10 = 40 byte, 즉 20byte가 추가적으로 필요! 

처음에 int[5] 메모리공간 뒤에 20byte가 비어있다는 보장이 X 

따라서 공간이 부족하면 40byte 빈 공간으로 옮겨야하는데, 이건 X 

공간이 부족하면 새로운 배열을 만들고 기존 배열을 복사하여 사용 

 

int[] score = new int[6]

for(int i=0; i<6; i++) 

    System.out.println(score[i]);     //배열의 모든 요소 출력 

 

배열의 길이를 6 > 5로 변경하게 되면 

for문 조건식도 변경해줘야함. 변경을 안하게되면 배열의 인덱스 범위를 초과하여 에러 발생 

따라서 

for (int i=0; i<score.length; i++)    // 배열의 길이로 조건식을 변경하면 배열의 길이가 변경되도 따로 변경할 필요 X 

 

배열의 초기화

- 배열의 각 요소에 처음으로 값을 저장하는 것 

int[] score = new int[5];              // 길이가 5인 int형 배열 생성

score[0] = 50;                          // 각 요소에 직접 값을 저장 

score[1] = 60;

score[2] = 70;

score[3] = 80;

score[4] = 90; 

 

int[] score = new int[] {50,60,70,80,90};

int score = {50,60,70,80,90};                // new int[] 생략 가능 ! 보통 이렇게 작성 

 

int[] score; 

score = {50,60,70,80,90} ;                   // 에러 왼쪽의 경우 new int[] 생략 X 

score = new int[] {50,60,70,80,90};        // OK

 

배열의 출력

int[] iArr = {100, 95, 80, 70, 60};

 

System.out.println(iArr);             //배열을 가리키는 참조변수 iArr의 값을 출력 [I@14318bb와 같은 형식 문자열 출력 

단, char[] chArr  = {'a', 'b', ' c', 'd'}; 

System.out.println(chArr);           // 정상 출력 가능 (캐릭터 배열의 경우에는 가능하다고함) 

 

for(int i=0; i<iArr.length; i++)

    System.out.println(iArr[i]);

또는

System.out.println(Arrays.toString(iArr));      // 배열 iArr의 모든 요소를 출력 

Arrays라는 클래스에있는 toString메소드를 사용 > 배열의 내용을 문자열로 만들어서 반환 

 

 

 

 

반응형

댓글