본문 바로가기

자바의 정석 정리

자바의 정석 - 5.1 배열

5.1.1 배열

  • 같은 타임의 여러 변수를 하나의 묶음으로 다루는 것
int[] score = new int[5];

5.1.2 배열 선언 및 생성

  • 배열 선언 방법
  • // 방법 1) 타입 뒤에 배열 선언 int[] score; // 방법2) 변수명 뒤에 배열 선언 int score[];
  • 배열의 생성
  • = new int[length];

5.1.3 배열의 인덱스

  • 생성된 각 저장공간을 '배열요소(element)'라 하며, '배열이름[인덱스]'의 형식으로 접근
  • 인덱스는 상수 대신 변수나 수식도 사용 가능
    score[i];
    score[i+1];
    score[i--];

5.1.4 배열의 길이

  • 값을 저장할 수 있는 공간의 개수
  • 배열의 길이는 0부터 '배열의 길이-1' 까지

-배열의 길이는 int범위의 양의 정수(0도 포함)이어야 한다.

  • 배열의 길이 변경 방법 순서
  1. 더 큰 배열을 새로 생성
  2. 기존의 배열을 새로운 배열에 복사

5.1.5 배열의 초기화

  • 생성과 동시에 자동으로 자신의 타입에 해당하는 기본값으로 초기화
  • 초기화 방법
    int[] score = new int[] {50, 60, 70, 80, 90};
    int[] score = {50, 60, 70, 80, 90}; //new Int[] 생략 가능
    //길이가 0인 배열 생성 방법
    int[] score = new int[0];
    int[] score = new int[] {};
    int[] score = {};
    //불가능한 방법
    int[] score;
    score = {50, 60, 70, 80, 90};

5.1.6 배열의 출력

  • 배열 참조변수를 print를 통해 출력을 하면 '타입@주소 출력'
    int[] iArr = {50, 60, 70, 80, 90};
    System.out.println(iArr) //[I@14318bb]가 출력
    char[] chAtrr = {'a', 'b', 'c', 'd'};
    System.out.println(iArr); //abcd출력

5.1.7 배열의 복사

  • 1.5~2배 많게 복사를 함
    int arr = new int[5];
    int[] tmp = new int[arr.length*2]; //새로운 배열 선언 및 생성
    for(int i=0; i<arr.length; i++) //배열 복사
      tmp[i] = arr[i]
    arr = tmp //arr이 tmp와 같은 배열을 가리키게 참조변수 주소를 복사

-System.arraycopy()를 통한 복사(더 효율적)

int[] num = new int[10];
int[] newNum = new int[20];
System.arraycopy(num, 0, newNum, 0, num.length)
/*
num[0]에서 newNum[0]로 num.length개의 데이터 복사
*/

5.1.8 String 배열

  • String 배열 역시 기존의 배열 선언 및 생성 방법과 동일
  • String 역시 객체이기 때문에 생성시 null로 초기화
    String[] name = new String[3];

5.1.9 String 배열의 초기화

  • 초기화 역시 기존의 배열 초기화 방법과 동일
    String[] name1 = new String[]{"kang","seong","beom"};
    Strring[] name2 = {"kang","seong","beom"};

5.1.10 char배열과 String 클래스

  • char 배열과 String클래스는 동일하다.
  • String 클래스는 char배열에 기능(메서드)를 추가한 것.
  • char배열과 String의 변환
    char[] chArr = {'a','b','c'};
    String str = new String(chArr); // char배열 -> string
    char[] tmp = str.toCharArray(); //string -> char배열

5.1.11 String 클래스의 주요 메서드

  • char charAt(int index)
  • 문자열에서 해당 위치에 있는 문자 반환
  • int length()
  • 문자열의 길이 반환
  • String substring(int from, int to)
  • 해당 범위(from ~ to-1)까지 문자열 반환
  • boolean equals(Object obj)
  • 내용을 비교하여 obj와 같은지 확인
  • char[] toCharArray()
  • 문자열을 문자배열(char[])로 반환

5.1.12 커맨드 라인을 통해 입력받기

  • 사용자의 입력을 받기위한 방법
  • 프로그램 실행 시 클래스 이름 뒤 공백문자로 구분하여 여러 프로그램에 전달
java ArrayEx16 abc 123
class ArrayEx16{
    public static void main(String[] args){
    }
}
/*
main의 파라미터인 args에 'abc', '123'이 포함 됨.
즉, args[0] = "abc" | args[1] = "123"
*/