java 배열

jooyeongmee·2023년 2월 14일
0

TIL2023/2

목록 보기
6/8

TIL(2023.2.14)


배열

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것입니다.

배열 선언 방법:

  1. 타입[] 변수이름. (ex. int[] age)
  2. 타입 변수이름[]. (ex. int age[])

배열의 생성: 실제 저장공간을 생성

  • 타입[] 변수이름 = new 타입[길이];
    ex.) int[] age = new int[5]
  • int[] age; int 타입의 배열을 다루기 위한 참조변수 age를 선언
  • age = new int[5]; int 타입의 값 5개를 저장할 수 있는 배열을 생성(new)
  • 배열의 시작 주소(메모리주소)가 참조변수 age에 저장되어 있다.
    즉. age는 저장된 주소를 통해 해당 배열을 가리킴.
    즉, 참조변수와 배열이 연결되었고 우리는 참조변수를 이용하여 배열을 다룬다.

배열은 한번 생성되면 컴파일 후 실행되는 동안은 그 길이(크기)를 바꿀 수 없다.

배열의 한계점

배열의 크기를 바꿀 수 없는 이유?

  • new int[5];로 배열을 생성하면 int 가 4byte 이기 때문에 총 20byte 를 저장하기 위한 연속적인 메모리 공간을 찾는다.
  • 연속적인 공간을 찾아서 주소를 배정한다.
  • 배정이 끝난 후 크기를 5가 아닌 10으로 늘려야 한다고 가정해 봤을 때
    배정받은 주소 뒤에 20byte 를 추가적으로 배정해야 하는데 뒤에 연속적인 메모리 공간이 존재한다는 보장이 없다.
  • 따라서 크기를 바꿀 수 없다.

배열의 크기가 부족할 때의 방법:

  1. 필요한 만큼의 크기의 배열을 새롭게 만든다.
  2. 새로 만든 배열에 기존 배열의 값을 복사해서 저장한다.

배열의 초기화

초기화할 때, boolean 기본값 false이고 참조형 변수(String or any Object)는 기본값이 null이다.

참조형 변수는 null 또는 객체의 주소(4byte, 0x0 ~ 0xFFFFFFFF)를 값으로 가진다. null은 어떤 객체의 주소도 저장되지 않음을 뜻한다. 단, JVM이 32 bit가 아니라 64bit라면 참조형 변수의 크기는 8byte가 된다.

class Arrays2_2 {
    public static void main(String[] args) {
        int[] num1 = new int[]{1,2,3,4,5,6,7,8,9};
        int[] num2 = {1,2,3,4,5,6,7,8,9};

        for (int i = 0; i < num1.length; i++) {
            System.out.println("num1[" +i + "] = " + num1[i]);
        }
        System.out.println();
        for (int i = 0; i < num2.length; i++) {
            System.out.println("num2[" +i + "] = " + num2[i]);
        }

        System.out.println();
        
        // 주의 할 점!
        int[] num3;
        // num3 = {1,2,3,4,5,6,7,8,9}; // Error 발생합니다.

        // 위처럼 나눠서 표현을 해야 한다면 아래처럼 초기화 하셔야 합니다.
        int[] num4;
        num4 = new int[]{1,2,3,4,5,6,7,8,9};

        for (int i = 0; i < num4.length; i++) {
            System.out.println("num4[" +i + "] = " + num4[i]);
        }
    }
}

String 클래스

char[] 와 메서드(기능)을 결합한 것이다.

  • 기본형처럼 사용이 가능한 참조형이다.
    ex.) String str = "행복";
    String str = new String("행복");
  • String 클래스는 내용을 변경할 수 없다. 새로운게 만들어짐

String의 주요 메서드

String 배열의 선언과 생성

String[] name = new String[3];
//참조형이기에 기본값이 null로 초기화된다.

2차원 배열

테이블 형태의 데이터를 저장하기 위한 배열.

2차원 배열의 선언과 생성

int[][] score = new int[4][3]; (int[] score[] --> 이렇게 적을 수도 있음)
// 4행 3열의 2차원 배열 score 가 생성됩니다.

가변배열: 배열 길이가 일정하지 않을 수도 있다.

int[][] arr = new int[3][];
for (int i = 0; i < arr.length; i++) {
	arr[i] = new int[i+1];
}

2차원 배열의 초기화

int[][] score = new int[][]{{}, {}, {}, {}};
int[][] score = {{}, {}, {}, {}};

Arrays

  • Arrays.equals(strArr1, strArr2) // 1차원비교
  • Arrays.deepEquals(strArr1, strArr2) // 다차원비교
  • Arrays.toString(num)
  • Arrays.copyOf(arr, 7); // 범위가 넘어가는 복사는 초기화값이 들어간다.
  • Arrays.copyOfRange(arr, 0, 7);// 범위가 넘어가는 복사는 초기화값이 들어간다.
  • Arrays.sort(arr); // 오름차순으로 정렬됩니다.
profile
부지런하면서도 게으른 공순이

0개의 댓글