본문 바로가기
개발/자바

Java 배열

by mabyoungg 2023. 4. 27.

배열: 같은 타입의 여러 변수를 하나의 묶음으로 다룸

선언: 타입[] 변수이름;, 타입 변수이름[];

인덱스: 요소에 자동으로 붙는 일련번호, 범위는 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