Language/Java

배열(Array)

snowkit 2022. 7. 17. 22:11

배열의 생성과 초기화

  • 배열은 다음과 같이 초기화할 수 있다
// 선언+생성+초기화 동시에
int[] scores1 = new int[] {100, 90, 80, 70, 60};

// 선언 따로 생성+초기화 따로
int[] scores2;
scores2 = new int[] {100, 90, 80, 70, 60};
  • 배열의 선언과 생성을 동시에 하는 경우 new 생성자[] 생략 가능
// 선언+생성+초기화 동시에
int[] scores3 = {100, 90, 80, 70, 60};

길이가 0인 배열

  • null 대신 길이가 0인 배열을 사용하면 null 체크 등 복잡한 로직을 생략할 수 있기 때문에 유용하게 사용된다

배열의 복사

  • 배열은 for문이나 System.arraycopy()로 복사할 수 있다
  • for문으로 배열 복사하기
int[] scores = new int[] {100, 90, 80, 70, 60};

int[] scoresCopy = new int[scores.length];
for (int i = 0; i < scoresCopy.length; i++) {
    scoresCopy[i] = scores[i];
}
  • System.arraycopy(원본, 복사 시작 인덱스, 대상, 붙여넣기 시작 인덱스, 복사 길이)로 배열 복사하기
int[] scores = new int[] {100, 90, 80, 70, 60};

int[] scoresCopy = new int[scores.length];
System.arraycopy(scores, 0, scoresCopy, 0, scores.length);
  • for문은 배열 하나하나에 접근해서 복사하지만, System.arraycopy()는 지정된 범위 값을 한번에 복사한다
    • 배열은 연속된 메모리 주소에 저장되어 있기 때문에 가능한 방법
    • for문 보다 효율 좋음

가변 배열

  • 2차원 이상의 다차원 배열 생성 시, 마지막 차수의 길이를 지정하지 않으면 각각 다른 길이의 배열을 생성할 수 있다
// 마지막 차수 길이 지정
int[][] scores1 = new int[5][3];
/*
{
  {1, 2, 3},
  {1, 2, 3},
  {1, 2, 3},
  {1, 2, 3},
  {1, 2, 3}
}
*/

// 마지막 차수 길이 미지정
int[][] scores2 = new int[5][];
/*
{
  {1, 2},
  {1, 2, 3, 4, 5},
  {1, 2, 3},
  {},
  {1}
}
*/

'Language > Java' 카테고리의 다른 글

오버라이딩(Overriding), 오버로딩(Overloading)  (0) 2022.07.17
초기화 블록(Initialization block)  (0) 2022.07.17
소수점 자르기  (0) 2022.06.14
문자형(char)  (0) 2022.06.13
형 변환(Type Casting)  (0) 2022.06.12