Chapter05 배열(array)

cookienc·2021년 6월 26일
0

Java 기본 개념

목록 보기
4/13
post-thumbnail

1. 배열(array)

1.1 배열(array)이란?

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

1.2 배열의 생성

int[] score; // int형 배열 선언(배열을 다루기 위한 참조변수 선언)
score = new int[5]; // 배열을 생성(실제 저장공간을 생성)
/////////////////////////////////////
int[] score = new int[5];// 위와 같은 문장

1.3 배열의 길이와 인덱스

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

  • 배열의 길이는 0도 포함된다. ex) int[] arr = new int[0];
  • 배열의 길이를 변경하는 법 : 더 큰 배열 생성, 기존 배열의 내용을 새로운 배열에 복사

배열이름.length : 배열길이 값을 반환해준다. 상수값(변경불가능)

1.4 배열의 초기화

  • 배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화 됨.
  • for문이나 아래와 같은 방법으로 초기화를 할 수 있음.
int[] score = new int[] { 50, 60, 70, 80, 90 }; // 배열과 생성과 초기화를 동시에 할 수 있음.
int[] score = { 50, 60, 70, 80, 90 }; // new int[] 생략 가능

※ 배열 선언과 배열 생성을 나눠서 하면 'new int[]'를 생략 불가능

< 배열의 출력 >

  1. for문을 이용하여 출력
  2. System.out.println(Array.toString(배열이름));을 이용하여 출력 // import.java.util.*;를 추가해야 함.
  3. char배열은 println()으로 그냥 출력할 수 있다.

1.5 배열의 복사

  1. for문을 이용하여 복사
  2. System.arraycopy()를 이용한 배열의 복사 → 효율이 좋다.
//1. for문을 이용하여 복사
int[] arr = new int[5];
...
int[] tmp = new int[arr.length*2];
for(int i = 0; i < arr.length; i++) 
      tmp[i] = arr[i]; // arr[i]의 값을 tmp[i]의 값에 저장

arr = tmp; // 참조변수 arr이 새로운 배열을 가리키게 한다.( 전에 arr이 가리키던 배열은 더 이상 이용할 수 없게 된다.)
//2. System.arraycopy()를 이용한 배열의 복사
for(int i = 0; i < num.length; i++) { new Num[i] = num[i]; }
// 위와 아래는 동일한 동작을 한다
System.arraycopy(num, 0, newNum, 0, num.length);
//.............num[0]에서 newNum[0]으로 num.length개의 데이터를 복사


2. String배열

2.1 String배열의 선언과 생성

String[] name = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성한다.
자료형기본값
booleanfalse
char'\u0000'
byte, short int0
long0L
float0.0f
double0.0d 또는 0.0
참조형 변수null

2.2 String배열의 초기화

  1. 배열의 각 요소에 대입
  2. 괄호{}를 사용해서 초기화

참조형 배열인 경우 실제 객체가 아닌 객체의 주소가 저장되어 있다.

2.3 char배열과 String클래스

String클래스는 char배열에 기능(매서드)을 추가한 것이다.

매서드설명
char charAt(int index)문자열에서 해당 위치(index)에 있는 문자를 반환한다.
int length()문자열의 길이를 반환한다.
String substring(int from, int to)문자열에서 해당 범위(from ~ to)에 잇는 문자열을 반환한다.(to는 범위 포함x)
boolean equals(Object obj)문자열의 내용이 obj와 같은지 확인한다. 같으면 true, 틀리면 false를 반환.
char[] toCharArray()문자열을 문자배열(char[])로 변환해서 반환한다.

<char배열과 String클래스의 변환>

char[] chArr = { 'A', 'B', 'C' };
String str = new String(chArr); // char배열 -> String
char[] tmp = str.toCharArray(); // String -> char배열


3. 다차원 배열

3.1 2차원 배열의 선언과 인덱스

선언방법선언 예
타입[][] 변수이름;int[][] score;
타입 변수이름[][];int score[][];
타입[] 변수이름[];int[] score[];
int[][] score = new int[4][3]; // 4행 3열의 2차원 배열 생성

3.2 2차원 배열의 초기화

int[][] arr = new int[][] { {1, 2, 3}, {4, 5, 6} };
int[][] arr = { {1, 2, 3}, {4, 5, 6} }; // new int[][] 생략 가능
int[][] arr = { 
		{1, 2, 3},
                {4, 5, 6} 
              }; 			// 행별로 줄바꿈 해주면 보기에 좋다.

변수이름.length = 행의 개수, 변수이름[i].length = i 행의 열의 개수

3.3 가변 배열

2차원 이상의 다차원 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 추후에 다른 배열의 길이를 생성할 수 있다.

int[][] score = new int[5][];
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[2];
score[3] = new int[2];
score[4] = new int[3];             // 열의 개수가 다른 배열 생성의 예

////////////////////////////////////////

int[][] score = {
		   {100, 100, 100, 100},
           	   {20, 20, 20},
                   {30, 30},
                   {40, 40},
                   {50, 50, 50}
                };		   // 열의 개수가 다른 배열을 생성과 동시에 초기화

0개의 댓글