배열이란? |
배열은 같은 타입의 여러 변수를 하나의 묶음을 연속적으로 다루는 자료구조
배열의 선언과 생성
int[] array = new int[5];
배열의 선언(int[] array): 타입[] 참조변수이름
배열의 생성(array = new int[5]): 참조변수이름 = new 타입[길이]
배열의 길이와 인댁스
인덱스의 범의는 0부터 "배열의 길이 - 1" 까지
배열의 길이는 int범위의 양의 정수(0도 포함)이어야 한다.(0 ~ 20억)
배열이름.length
자바에서는 JVM이 모든 배열의 길이름 별도로 관리하며, '배열이름.length'를 통해서 배열의 길이에 대한 정보를 얻을 수 있다.
배열의 길이 변경하기
1. 더 큰 배열을 새로 생성한다.
2. 기존 배열의 내용을 새로운 배열에 복사한다.
배열의 초기화
int[] array = new int[5]{10, 20, 30, 40, 50};
int[] array = {10, 20, 30, 40, 50};
int[] array;
array = new int[]{10, 20, 30, 40 ,50} //OK
array = {10, 20, 30, 40, 50} //ERROR
int add(int[] arr){/* 내용 생략 */};
int result = add(new int[]{10, 20, 30, 40 ,50}); //OK
int result = add({10, 20, 30, 40 ,50}); //ERROR
Arrays.toString(배열이름): 배열의 모든 요소를 '[첫번째 요소, 두번쨰 요소,..]'와 같은 형식의 문자열로 만들어서 반환 함
int[] array = {10, 20, 30, 40 ,50};
System.out.println(Arrays.toString(array)); // [10, 20, 30, 40, 50] 출력
배열의 복사
int[] array = {10,20, 30, 40 ,50};
int[] brray = new int[] {1, 2, 3, 4, 5, 6, 7};
array = brray;
System.out.println(array.length); //7
for(int item: array)
System.out.print(item + ", "); //1, 2, 3, 4, 5, 6, 7
System.arraycopy()를 이용한 배열의 복사
- System.arraycopy(src, srcPos, dest, destPos, length): src[srcPos]에서 dest[destPos]으로 length개의 데이터를 복사
char[] abc = {'A', 'B', 'C', 'D'};
char[] num = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
char[] result = new char[abc.length + num.length];
System.arraycopy(abc, 0, result, 0, abc.length);
System.arraycopy(num, 0, result, 0, num.length);
System.out.println(result);//123456789
System.arraycopy(abc, 0, num, 0, abc.length);
System.out.println(num); //ABCD56789
System.arraycopy(abc, 0, num, 6, 3);
System.out.println(num);//ABCD56ABC
//cf) char 배열은 for문을 사용하지 않고도 배열에 저장된 모든 문자를 출력 가능
String 배열
String클래스는 char배열에 기능(메서드)을 추가한 것이다.
커멘드라인을 통해 입력받기
C:\jdk1.8\project\test>java Main abc 123
1. 커멘드라인을 통해 입력된 두 문자열은 String배열에 담겨서 Main클래스의 main메서드의 매개변수(args)에 전달
2. main메서드 내에서 args[0], args[1]과 같은 방식으로 커멘드라인으로 부터 전달 받은 문자열에 접근 가능.
3. 커멘드라인을 통해 입력된 매개변수는 공백으로 구분
4. 숫자도 문자열로 처리 ex) "123"
5. 매개변수를 입력하지 않은 크기가 0인 배열 생성 - 배열을 생성하지 않으면 참조변수 args가 null이 되어 에러 발생
C:\jdk1.8\project\test>java Main abc 123 "Hello World"
public static void main(String[] args){
for(int i = 0; i < args.length; i++)
System.out.println("args[" + i "] = " args[i]);
//args[0] = abc
//args[1] = 123
//args[2] = Hello World
}
다차원 배열
int[][] array = new int[4][5];
배열의 선언(int[][] array): 타입[][] 참조변수이름
배열의 생성(array = new int[4][5]): 참조변수이름 = new 타입[행 길이][열 길이]
다차원 배열의 초기화
int[][] array = new int[][]{{1, 2, 3}, {4, 5, 6}};
int[] array = {{1, 2, 3}, {4, 5, 6}};
가변 배열
2차원 이상의 배열을 생성할 때 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, ㅊ후에 각기 다른 길이의 배열을 생성할 수 있음
int[][] array = new int[3][];
array[0] = new int[3];
array[1] = new int[1];
array[2] = new int[2];
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA 이론] 객체지향 프로그래밍_2 (0) | 2022.01.22 |
---|---|
[JAVA 이론] 객체지향 프로그래밍_1 (2) | 2022.01.19 |
[JAVA 이론] 조건문과 반복문 (0) | 2022.01.12 |
[JAVA 이론] 연산자 (0) | 2021.12.28 |
[JAVA 이론] 변수 (0) | 2021.12.16 |