JAVA TIL #3

원종운·2019년 10월 30일
1

기본 자료형 배열

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

1. 배열의 선언

  • 타입 뒤나 변수이름 뒤에 []를 붙이면 된다.
int[] score;
//타입 뒤의 []를 붙인 경우이다.

int score[];
//변수이름 뒤에 []를 붙인 경우이다.

2. 배열의 선언과 생성

int[] score;
score = new int[5];			
// 선언과 생성을 분리

int[] score = new int[5];	  
// 선언과 생성을 동시
  • 두 코드 모두 동일한 코드이다.
  • lvalue의 []안의 숫자는 배열의 길이를 의미한다.
  • 초기화할 배열의 요소의 값을 지정하지 않으면 배열의 타입의 기본값으로 초기화 된다. ( 위의 경우는 int형의 기본값 0 )

3. 배열의 길이와 인덱스

int[] score = new int[5] { 1, 2, 3, 4,5 };
int len = score.length;						// len = 5
  • 배열의 길이는 위와 같이 "배열의 변수이름".length를 통하여 얻을 수 있다.
  • 배열의 인덱스는 0부터 시작하며 마지막 인덱스는 배열의 길이 - 1이다.
  • 배열의 길이는 음이 아닌 정수이다. 즉 0도 포함한다는 것이다.
  • 배열의 길이는 이론 상 int형의 최대값이며, 이렇게 긴 경우는 드물기에 거의 제약이 없다고 알면 된다.

4. 배열의 초기화

int[] score = new int[] { 50, 60, 70, 80, 90 };
// 배열의 길이를 생략하면 초기화 하고자하는 element의 수를 계산하여 배열의 길이가 자동으로 결정된다.

int[] score;
score = new int[] { 50, 60, 70, 80, 90 };
// 배열의 길이를 생략하면 초기화 하고자하는 element의 수를 계산하여 배열의 길이가 자동으로 결정된다.

int[] score = { 50, 60, 70, 80, 90 };			
// 배열의 선언과 생성(초기화)를 동시에 할 경우에 "new int[]"도 생략이 가능하다.
  • 세 코드 모두 동일한 코드이다.
  • 배열의 길이를 생략하면 초기화 하고자하는 element의 수를 계산하여 배열의 길이가 자동으로 결정된다.
  • 배열의 선언과 생성(초기화)을 동시에 할 경우 "new int[]"도 생략이 가능하다.

5. 배열의 복사

  1. 새로운 배열을 만든 후 복사 ( 비효율적 )
  2. System.arraycopy()를 이용 ( 효율적 )

6. 기타

  • 2차원 배열, 다차원 배열, 가변 배열 모두 원리가 동일하다.

String 배열

  • 모든 것이 기본 자료형 배열과 동일하나 String은 클래스이므로 new String("string")으로 생성하여야 하지만, String의 경우만, "string"으로 표현하는 것을 허용한다.
String[] name = new String[3];
name[0] = new String("kim");
name[1] = new String("jong");
name[2] = new String("woon");

String[] name = new String[3];
name[0] = "kim";
name[1] = "jong";
name[2] = "woon";

String[] name = new String[] { "kim", "jong", "woon" };
String[] name = { "kim", "jong", "woon" };
  • 위 코드들은 모두 동일한 코드들이다. 강한 표현에서 약한 표현을 지원할 뿐, 기본 원리는 동일하다.
  • 초기화할 배열의 요소의 값을 지정하지 않으면 배열의 타입의 기본값으로 초기화 된다.
    ( 위의 경우는 String형은 참조형이므로 기본값 null )
profile
Java, Python, JavaScript Lover

0개의 댓글