[JAVA 개념정리] 배열(Array)

Doyeon·2023년 1월 18일
0

JAVA 개념정리

목록 보기
9/13
post-thumbnail
post-custom-banner

배열

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

배열의 선언

  • 생성된 배열의 시작 주소(메모리 주소)를 담을 참조변수 공간 생성
  • 타입[] 변수이름;
    • int[] age; , String[] name;
  • 타입 변수이름[];
    • int age[]; , String name[];

배열의 생성

  • 실제 저장 공간을 생성
int[] age;  // int 타입 배열의 시작 주소를 담을 참조변수 age 선언
age = new int[5];   // int 타입 값 5개 저장할 수 있는 배열 생성(new)

배열의 인덱스

  • 각 요소(저장공간)에 자동으로 붙는 일련 번호
  • 범위 : 0 ~ (배열길이 - 1)

배열의 길이

  • 배열이름.length
  • 배열은 한번 생성되면 컴파일 후 실행되는 동안은 길이를 바꿀 수 없다.
    • 배열이 생성되면 연속적인 공간을 찾아 주소를 배정하는데, 배정 후에 크기를 늘려야 한다면 추가적인 연속적인 메모리 공간이 존재한다는 보장이 없다.
  • 배열의 크기가 부족하다면?
    • 필요한 만큼의 크기 배열을 새로 만든다.
    • 새로 만든 배열에 기존 배열 값을 복사해서 저장한다.

배열의 초기화

  • 배열의 각 요소에 처음으로 값을 저장하는 것
  • 자동 초기화 - 기본값(0, false, null)
int[] num = new int[]{1, 2, 3, 4, 5}; // OK
int[] num = {1, 2, 3, 4, 5};  // OK

//Error 선언과 생성을 따로 하면 안된다.
int[] num;
num = {1, 2, 3, 4, 5};

배열의 출력

int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr);  // [I@... 메모리 주소 비슷한 문자열 출력 [-배열, I-int, @-위치

char[] chArr = {'a', 'b', 'c'};
System.out.println(chArr); // abc 출력. println 메서드가 char배열일 때만 값 출력하도록 작성

// Arrays.toString(배열) : 배열의 모든 요소를 문자열로 만들어 반환
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5] 출력

String 배열

String 클래스

  • char[] + 메서드(기능) → 문자열을 다루기 더 편하다.
  • 기본형처럼 사용이 가능한 참조형
    • String str = “행복”;
    • Stirng str = new Stirng(”행복”);
  • String 클래스는 내용을 변경할 수 없다. 새로운 문자열이 만들어진다.
  • 변경 가능한 문자열은 StringBuffer 클래스 사용

String 클래스의 주요 메서드

  • char charAt(int index) : index번째에 있는 문자 반환
  • int length() : 문자열 길이 반환
  • String substring(int from, int to) : from번째 ~ (to - 1)번째 문자열 반환
  • boolean equals(Object obj) : 문자열 내용 같은지 확인. 같으면 true, 다르면 false
  • char[] toCharArray() : 문자배열(char[])로 변환해서 반환

String 배열의 선언과 생성

String[] name = new String[3];
  • 참조형이기 때문에 기본값 null로 초기화

2차원 배열

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

2차원 배열의 선언과 생성

  • 타입[][] 변수이름;
    • int[][] score;
  • 타입 변수이름[][];
    • int score[][];
  • 타입[] 변수이름[];
    • int[] score[];

2차원 배열의 초기화

int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}};
int[][] arr = {{1, 2, 3}, {4, 5, 6}}; // new int[][] 생략

Arrays

문자열 비교와 출력

equals() - 문자열 비교
toString() - 배열 값 출력

// strArr1, strArr2 모두 2차원 배열일 때

// 1 차원 비교에는 equals
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();
// 다차원 비교에는 deepEquals
System.out.println("Arrays.deepEquals(strArr1, strArr2) = " + Arrays.deepEquals(strArr1, strArr2)); // true

배열 복사

copyOf(배열, 길이)
copyOfRange(배열, from, to) - from번째부터 (to - 1)번째까지

정렬

sort()


[참고] <Java의 정석 - 기초편>

profile
🔥
post-custom-banner

0개의 댓글