-
🎮 [JAVA 자바] #5 | 자바 배열, 다차원 배열, Arrays 클래스CS/Java 2022. 4. 17. 00:19
🎮 배열
- 배열 (array)
같은 타입의 데이터들이 순차적으로 저장
인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조
int[] score; // 또는 int score[]; score = new int[5]; String[] name; // 또는 String name[]; name = new String[5];
* int (배열 타입) [] (배열 선언) score (배열에 대한 레퍼런스 변수) = new (배열 생성) int (타입) [5] (원소 개수)
- 배열의 초기화
생성된 배열에 처음으로 값을 저장하는 것. 직접 각 요소에 값을 저장하는 방식과 자동 저장하는 방법이 있다.
// 직접 저장 int[] score = new int[3]; score[0] = 100; score[1] = 90; score[2] = 80; // 자동 저장 int[] myScore = {100,90,80); int[] myScore = new int[] {100,90,80); int[] secondScore; secondScore = new int[] {100,90,80); /* 에러 발생!! 나누지말고 한 줄에 쓰거나 new int[] 써주어야함. int[] secondScore; secondScore = {100,90,80); */
- 레퍼런스 치환과 배열 공유
하나의 배열을 다수의 레퍼런스가 참조 가능
int intArray[] = new int[5]; int myArray[] = intArray; // 같은 하나의 배열을 참조 intArray[1] = 2; myArray[1] = 6; // intArray[1]도 6이된다 (같은거니까)
🎮 다차원 배열
- 2차원 배열
// 2차원 배열 레퍼런스 선언 char charArray[][]; // 또는 char[][] charArray; int intArray[][]; // 또는 int[][] intArray; // 2차원 배열 생성 charArray = new char[5][5]; // 또는 char charArray[][] = new char[5][5]; intArray = new int[2][5]; // 또는 int intArray[][] = new int[2][5]; // 2차원 배열 선언, 생성, 초기화 char charArray[][] = {{'a','b'}, {'c','d','e'}}; int intArray[][] = {{0,1,2}, {3,4,5}}; // 2차원 배열 for-each문 for (int[] row: arr) { // [] 사용 주의 for (int x: row) { System.out.print(x+" "); } System.out.println(); }
- 비정방형 배열
정방형 배열 : 각 행의 열의 개수가 같은 배열
비정방형 배열 : 각 행의 열의 개수가 다른 배열로, 메모리 효율에서 장점이다.
int i[][]; i = new int[4][]; // i.length = 4 (2차원 배열의 행의 개수) i[0] = new int[1]; // i[0].length = 1 (2차원 배열 n번째 행의 열의 개수) i[1] = new int[2]; // i[1].length = 2 i[2] = new int[3]; // i[2].length = 3 i[3] = new int[4]; // i[3].length = 4
🎮 배열 리턴
- 메소드와 배열
int[] makeArray() { // 리턴 타입 : int[] -> 레퍼런스 타입 int temp[] = new int[4]; return temp; // 배열 리턴 -> 레퍼런스 리턴 } intArray = makeArray();
🎮 Arrays 클래스
- Arrays 클래스
Arrays 배열을 다루기 위한 유용한 메소드 제공
배열의 출력 : toString(arr1), deepToString(arr1)
배열의 비교 : equals(arr1,arr2), deepEquals(arr1,arr2)
배열의 복사 : copyOf(arr1,integer), copyOfRange(arr1,index1,index2)
배열의 정렬 : sort(arr) 오름차순으로 정렬
// 출력 System.out.println(Arrays.toString(ary1)); // 일차원 배열 [0,1,2,3,4] System.out.pritnln(Arrays.deepToString(ary2)); // 다차원 배열 [[11,12],[21,22]] // 비교 System.out.println(Arrays.equals(str1,str2)); // 일차원 배열 (다차원 배열을 이거로 비교하면 false) System.out.println(Arrays.deepEquals(str1,str2)); // 다차원 배열 // 복사 int[] arr2 = Arrays.copyOf(arr1, arr.length); // arr2=[0,1,2,3,4] int[] arr3 = Arrays.copyOf(arr1, 7); // arr3=[0,1,2,3,4,0,0] 뒤에 0 추가 int[] arr4 = Arrays.copyOfRange(arr1, 2, 4); // arr4=[2,3] 인덱스 2부터 4전까지 복사 (2~3) // 정렬 Arrays.sort(ary1);
* 참고 : for-each사용 출력-> for (int e : arr) { System.out.println(e); }
'CS > Java' 카테고리의 다른 글