[Java] 배열(array)
by Choi HyeSun
배열
-
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
-
import java.util.Arrays; 후 사용해야 함
배열의 선언
-
선언
- 생성된 배열을 다루기위한 참조변수를 위한 공간이 만들어짐
-
방법
-
타입[] 변수이름; (추천!)
-
타입 변수이름[];
-
생성
-
값을 저장할 수 있는 공간이 만들어짐
-
연산자 new와 함께 배열의 타입과 길이를 지정해주어야 함(길이 = 0 + 양의정수)
-
방법
-
변수이름 = new 타입[길이];
-
자동으로 타입의 기본값으로 배열 공간(=배열요소=element)들이 초기화됨
-
-
선언과 생성을 동시에 할 수 있음
- 타입[] 변수이름 = new 타입[길이];
배열 길이(length)
-
배열 요소(element)의 개수
-
값을 저장할 수 있는 공간의 개수
-
int 범위의 양의 정수(0 포함)
-
한 번 작성하면 변경이 불가하고, 저장 공간이 부족할 경우 더 큰 길이의 새로운 배열을 생성한 후 기존의 배열에 저장된 값들을 새로운 배열에 복사
- 꽤나 비용이 많이 듦
-
기존의 2배정도의 길이로 생성하는 것을 권장
- 너무 많이 잡으면 메모리 낭비
배열 인덱스(index)
-
배열의 요소마다 붙여진 일련번호
-
각 요소를 구분하는데 사용됨
-
범위 : 0부터 ‘배열 길이 -1’까지
배열 값 저장 및 읽어오기
-
변수와 동일
- 변수이름 대신 ‘배열이름[인덱스]’사용
-
배열명[인덱스] = 값;
- 배열명 인덱스에 해당하는 위치에 값을 저장
-
타입 변수 = 배열명[인덱스];
- 배열명 인덱스 값을 변수에 대입
-
유효하지 않은 값을 사용할 경우(인덱스 초과)
-
변수의 값은 실행시 대입되므로 컴파일러는 컴파일시에 해당 에러를 잡지 못함(런타임에러)
-
실행시 ArrayIndexOutpOfBoundsException 발생 : 배열의 인덱스가 유효한 범위를 초과한 경우
-
배열이름.length
-
자바에서는 JVM이 모든 배열의 길이를 별도로 관리
-
배열이름.length를 통해 배열의 길이에 대한 정보를 얻을 수 있음
-
배열은 한 번 생성하면 길이를 변경할 수 없음
-
이미 생성된 배열의 길이는 변하지 않으므로 배열.lenght는 상수 (값을 변경할 수 없음)
-
모든 경우에 배열의 길이를 직접 적어주는 것보다 배열이름.length를 적어주는 것이 코드의 관리가 쉽고 에러가 발생할 확률이 적어짐
배열의 초기화
-
생성과 동시에 자동적으로 자신에 타입에 해당하는 기본 값으로 초기화 됨
-
생성과 초기화를 동시에 하려면
-
int[] scoreA = new int[]{1, 2, 3, 4, 5}
-
int[] scoreB = {1, 2, 3, 4, 5} // 선언시 생략 가능
-
scoreA = new int[]{1, 2, 3, 4, 5}
-
scoreB = {1, 2, 3, 4, 5} // 그냥 초기화시 생략 불가능!
-
배열의 출력
-
배열명[인덱스] → 인덱스에 해당하는 값 하나 출력
-
Arrays.toString(배열명) → 배열값 전체 출력 ( [값1, 값2, … ] )
-
그냥 배열명으로 출력시 주소값이 출력됨
-
단, char 배열의 경우, 각 요소가 구분자 없이 출력 됨
- 예) char[] charA = {‘a’, ‘b’, ‘c’, ‘d’};
→ abcd 출력
- 예) char[] charA = {‘a’, ‘b’, ‘c’, ‘d’};
배열의 복사
링크 참고 LINK
String 배열
-
참조형 변수의 기본값은 null
-
String 배열 → String 주소값(참조형 변수 - 주소값) → String 값(실질적 값)
Char 배열
-
String 클래스는 char배열에 기능(메서드)을 추가한 것
-
차이) String 객체(문자열)은 읽을 수만 있을 뿐, 내용을 변경할 수 없음
커맨드 라인을 통해 입력받기
-
java Class명 argument
-
예시) java MainTest 123 abc
-
args[0] → “123”
-
args[1] → “abc”
-
-
JVM이 입력된 매개변수가 없을 때, null 대신 크기가 0인 배열을 생성해서 args에 전달하도록 구현되어 있기 때문에
- args!=null ← 같은 수고를 덜게함
다차원 배열
-
2차원 이상의 배열
-
링크 참고 LINK
가변 배열
- 2차원 이상의 배열일 때, 길이가 각기 다른 것
Subscribe via RSS