Java 기초 (4)

.·2023년 5월 5일

배열

배열

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

배열의 선언과 생성

배열의 선언

  • 배열을 다루기 위한 참조변수의 선언
    선언 방법 : 아래 두 가지 방법 모두 지원
  • 타입[] 변수이름;
    • int[] age;
    • String[] name;
  • 타입 변수이름[];
    • int age[];
    • String name[];
      배열의 생성 : 실제 저장공간을 생성
  • 타입[] 변수이름 = new 타입[길이];
  • int[] age; : int 타입의 배열을 다루기 위한 참조변수 age 를 선언
  • age = new int[5]; : int 타입의 값 5개를 저장할 수 있는 배열을 생성(new)
  • 배열의 시작 주소(메모리 주소)가 참조변수 age 에 저장되었다.
  • age 는 저장된 주소를 통해 해당 배열을 가리키고 있다.
    즉, 참조변수와 배열이 연결되었고 우리는 참조변수를 이용하여 배열을 다룰 수 있다.

배열의 인덱스

각 요소(저장공간)에 자동으로 붙는 일련 번호

  • 인덱스(index)의 범위는 0부터 '배열길이 - 1' 까지

  • int[] age = new int[5];

  • age[3] = 28;
  • 배열 age 의 4번째 요소에 28을 저장한다.

  • int beatitudoAge = age[3];
  • 배열 age의 4번째 요소의 값을 읽어서 beatitudoAge 변수에 저장한다.

배열의 길이와 초기화

배열의 길이

배열이름.length
배열의 길이 : int 타입 상수
int[] arr = new int[5]; : 배열의 길이가 5인 int 배열
int len = arr.length; : arr.length 의 값은 5이고 len 변수에 저장된다.
배열은 한번 생성되면 컴파일 후 실행되는 동안은 그 길이(크기)를 바꿀 수 없다.

배열의 한계점

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

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

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

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

배열의 초기화

배열의 각 요소에 처음으로 값을 저장하는 것을 의미한다.

자동 초기화

  • 배열은 기본적으로 저장 하려는 값의 타입의 기본값으로 자동 초기화 해준다.

초기화 방법

  1. int[] num = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
  2. int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9};
  • new int[]생략할 수 있다.

String 배열

String 클래스

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

  • 기본형 처럼 사용이 가능한 참조형이다.
    • String str = "행복";
    • String str = new String("행복");
  • 문자열을 많이 사용하기 때문에 특별하게 만들어진 클래스이다.
  • String 클래스는 내용을 변경할 수 없다. 새로운게 만들어진다.
  • String name = "choi";
    String firstName = "wb";
    name = name + firstName;

String 클래스의 주요 메서드

String 배열의 선언과 생성

String[] name = new String[3];

  • 3개의 문자열을 담을 수 있는 배열을 생성한다.
  • 참조형 이기 때문에 기본값 null초기화 된다.

2차원 배열

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

2차원 배열의 선언과 생성

int[][] score = new int[4][3];

  • 4행 3열의 2차원 배열 score 가 생성된다.

  • score[0][0] = 88;
    • 배열 score 의 1행 1열에 88을 저장한다.

2차원 배열의 초기화

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

Arrays

문자열 비교와 출력

equals(), toString()

배열 복사

copyOf(), copyOfRange()

정렬

sort()

0개의 댓글