배열: 같은 타입의 여러 변수를 하나의 묶음으로 다룸
선언: 타입[] 변수이름;, 타입 변수이름[];
인덱스: 요소에 자동으로 붙는 일련번호, 범위는 0부터 시작
길이: 배열이름.length, 배열은 한번 생성되면 길이(크기)를 바꿀 수 없다. 이미 연속적인 공간에 주소를 배정했기 때문
배열의 모든 요소를 문자열로 반환: Arrays.toString(arr)
int[] arr = {50, 40, 30, 20, 10};
System.out.println("arr = " + arr); // [I@7cca494b 출력되는데 실제 주소는 아님. [I@7cca494b -> [(배열), I(타입), @(위치)
// 예외
char[] cArr = {'a', 'b', 'c'};
System.out.println(cArr); // abc 출력, println 메서드의 기능 때문
Arrays.toString(arr)); // 배열의 모든 요소를 문자열로 반환
String 클래스: 내용을 변경할 수 없고 새로운게 만들어짐
String str = "가나다라마바사";
String str5 = "가나다라마바사";
char ch = str.charAt(3); // 문자열에서 해당 위치 문자 반환 ch = 라
String str2 = str.substring(1, 4); // 문자열에서 해당 범위의 문자열 반환 str2 = 나다라
String str3 = str.substring(1); // str3 = 나다라마바사
String str4 = str.substring(1, str.length()); // str4 = 나다라마바사
System.out.println(str.equals(str5)); // 문자열 내용 비교. 같으면 true, 다르면 false
char[] chArr = str.toCharArray(); // 문자열을 문자배열로 변환해서 반환
System.out.println("Arrays.toString(chArr) = " + Arrays.toString(chArr)); // Arrays.toString(chArr) = [가, 나, 다, 라, 마, 바, 사]
String 배열: String[] name = new String[2]; // 2개의 문자열을 담는 배열 생성
String[] strArr = {"가가", "나나", "다다", "라라"};
System.out.println("Arrays.toString(strArr) = " + Arrays.toString(strArr)); // [가가, 나나, 다다, 라라]
String[] strArr2 = new String[4];
System.out.println("Arrays.toString(strArr2) = " + Arrays.toString(strArr2)); // [null, null, null, null] 기본값 null 초기화
2차원 배열: int[][] num = new int[5][3]; // 5행 3열 2차원 배열 생성
초기화: int[][] num = new int[][]{{}, {}, {}, {}}; // int[][] num = {{}, {}, {}, {}};
int[][] score = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12}
};
System.out.println("score.length = " + score.length); //길이 4
System.out.println("score[0].length = " + score[0].length); // 3
// Arrays.toString() 출력
System.out.println(Arrays.toString(score[0])); // [1, 2, 3]
System.out.println(Arrays.toString(score[1])); // [4, 5, 6]
// for 출력
System.out.println("for");
for (int i = 0; i < score.length; i++) {
for (int j = 0; j < score[i].length; j++) {
System.out.println("score[" + i + "][" + j + "] = " + score[i][j]);
}
System.out.println();
}
// 향상된 for 출력
for (int[] sc1 : score) {
for (int sc2 : sc1) {
System.out.println(sc2);
}
System.out.println();
}
Array
문자열 출력, 비교
toString(), deepToString(), equals(), deepEquals() : deep 다차원 출력 비교
int[] num = {0, 1, 2};
int[][] score = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println("Arrays.toString(num) = " + Arrays.toString(num));
System.out.println("Arrays.deepToString(score) = " + Arrays.deepToString(score));
String[][] strArr1 = {
{"AAA","BBB","CCC"},
{"aaa","bbb","ccc"},
};
String[][] strArr2 = {
{"AAA","BBB","CCC"},
{"aaa","bbb","ccc"},
};
System.out.println("Arrays.equals(strArr1[0], strArr2[0]) = " + Arrays.equals(strArr1[0], strArr2[0])); // true
System.out.println("Arrays.equals(strArr1[1], strArr2[0]) = " + Arrays.equals(strArr1[1], strArr2[0])); // false
System.out.println("Arrays.equals(strArr1, strArr2) = " + Arrays.equals(strArr1, strArr2)); // false
System.out.println("Arrays.deepEquals(strArr1, strArr2) = " + Arrays.deepEquals(strArr1, strArr2)); // true
배열 복사
copyOf(), copyOfRange()
int[] arr = {0,1,2,3,4};
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
int[] arr2 = Arrays.copyOf(arr, arr.length);
int[] arr3 = Arrays.copyOf(arr, 3);
int[] arr4 = Arrays.copyOf(arr, 9); // 범위를 벗어나게 지정하면 넘어간 범위는 초기화값 0 들어감
int[] arr5 = Arrays.copyOfRange(arr, 3, 4);
int[] arr6 = Arrays.copyOfRange(arr, 1, 9);
정렬
sort(): 오름차순 정렬
int[] arr = {4, 2, 3, 6, 9};
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
*
오류명:
java: cannot find symbol
symbol: variable Arrays
location: class Arrays_test
해결방안:
class 선언문 이전에 java.util 패키지 import 후 Arrays 클래스 사용
1.
import java.util.*;
2.
import java.util.Arrays;
'개발 > 자바' 카테고리의 다른 글
| 쉽게 배우는 자바1 메모 (0) | 2023.05.30 |
|---|---|
| Java 객체지향 (2) | 2023.04.29 |
| Java 조건문과 반복문 (0) | 2023.04.26 |
| Java 연산자 (0) | 2023.04.25 |
| Java 변수 (0) | 2023.04.25 |