IT/JAVA

자바 - 배열(Array)

트레비라임 2020. 11. 14.

배열의 필요성?

변수는 한 개의 데이터만 저장할 수 있다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 변수가 필요하다.

같은 타입의 많은 양의 데이터를 다루는 프로그램에서 좀 더 효율적인 방법이 필요한데 이것이 배열이다.

 

 

 

배열이란?

배열은  같은 타입데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스를 부여해 놓은 자료구조이다.

 

 

 

배열 선언(형광펜으로 칠한 것을 권장한다.)

int[] Array; int intArray[];
double[] doubleArray; double doubleArray[];
String[] strArray String strArray[];

배열 변수 참조변수에 속한다. 배열도 객체이므로 힙영역에 생성되고 배열 변수는 힙 영역에 배열 객체를 참조하게 된다.

참조할 배열 객체가 없다면 배열 변수는 null 값으로 초기화될 수 있다.

만약 배열 변수가 null 값을 가진 상태에서 변수[인덱스]로 값을 읽거나 저장하게 되면

NullPointException이 발생한다. 배열 변수는 배열을 생성하고 참조하는 상태에서 값을 저장하거나 읽어야 한다.

 

 

 

 

 

배열 생성

타입[] 변수이름;   // 배열을 선언 (배열을 다루기 위한 참조 변수 선언)
변수이름 = new 타입[길이];  //배열을 생성(실제 저장공간을 생성)

int [ ] score;           // int타입의 배열을 다루기 위한 참조변수 score선언
score = new int [5]; // int타입의 값 5개를 저장할 수 있는 배열

한 줄로 선언

타입 [] 변수이름 = new 타입[길이];
int [] score = new int [5];

 

 

 

 

값 목록으로 배열 생성

String [] names = {"신용권", "홍길동", "김자바"};
String [] names =new String[] {"신용권","홍길동","김자바"};  //new String[] 생략 가능

값의 목록으로 배열 객체 생성 시 주의할 점 (선언과 생성을 따로 하는 경우에는 생략할 수 없다.)

타입[] 변수;
변수 = {값 0, 값 1, 값 2, 값 3,.....};   // 컴파일 에러 new new 타입[] 생략 불가
타입[] 변수;
변수 = new 타입[] {값 0, 값 1, 값 2, 값 3,.....}; //가능
String [] name = null;
names = new {"신용권", "홍길동", "김자바"}; //가능

메서드의 매개값이 배열일 경우에도 마찬가지다.

메소드의 매개 값으로 배열을 사용하고자 할 때는 반드시 new 연산자를 사용해야 한다.

int add(int [] scores){...}

int result = add({95,85,90});  //에러
int result = add(new int [] {95,85,90}) ; 

 

 

 

 

 

 

배열의 출력

(for문 이용, Array.toString();) 이용

 

 

 

 

배열을 복사

배열을 복사하는 방법은 2가지가 있다

1. for문을 이용해서 배열을 복사하는 방법

arr 배열의 길이는 5이다. 새로운 배열 tmp를 생성하고, 길이를 10으로 늘려서 arr에 있는 값을 tmp로 복사하는 코드이다.

자바의 정석 배열part

arr가 tmp를 가리키게 되었다.

 

 

 

 

2. System.arraycopy()를 이용한 배열의 복사

(배열의 복사는 for문보다 System.arraycopy()를 사용하는 것이 효율적이다.)

 

System.arraycopy()를 이용한 복사 예제

 

 

 

 

 

객체를 참조하는 배열

String 객체를 new 연산자로 생성하면, 무조건 새로운 String 객체가 생성되기 때문에 strArray [1] == strArray [2]는

false가 나온다.

 

참고 :https://kephilab.tistory.com/42

 

 

 

배열의 활용 예제

1. 총합과 평균

 

2.최대값 최소값

3.

 

향상된 for(enhanced for) 문

for(2. 변수 타입 변수 이름 :1. 배열 이름){
         3. 실행 부분;
}

향상된 for 문에서는 배열의 항목 수만큼 실행 부분을 반복한다 

1번 배열에서 가져올 첫 번째 값이 존재하는 검사 한다.

가져올 값이 존재하면, 변수에 저장한다.

그리고 3번 실행문을 시작한다.

실행문을 모두 수행하고, 다시 1번 배열에서 가져올 다음 값이 있는지 검사한다.

 

 

다차원 배열

배열 안에 값을 다 출력하고 싶으면 행을 기준으로 열을 돌린다

다차원 배열에서 배열 내용 출력하기

 

 

 

arr.length 첫 번째 배열인 int [3]의 길이를 재고  ====3

arr [i]. length는 각각의========4

arr [0], arr [1], arr [2]의 길이를 나타내요.

arr[0] 번째 줄의 길이는 4

arr[1] 번째 줄의 길이도 4

arr[2] 번째 줄의 길이도 4

'IT > JAVA' 카테고리의 다른 글

자바 - 상속(Inheritance)  (0) 2020.11.16
자바 - ArrayList  (0) 2020.11.15
자바 - static 정적 변수, 싱글톤  (0) 2020.11.11
자바 Date, Calendar 클래스  (0) 2020.11.06
객체지향 - 자바 this, this()의 역할  (0) 2020.11.03

댓글