[스터디]Java의 정석 6일차

Kristopher·2022년 1월 1일
0

Java 스터디

목록 보기
6/31

(Ch5) 1. 배열 ~ 1.6 배열의 활용

배열

배열이란 같은 타입의 여러 변수를 하나의 묶음으로 만들어 다루는 방식을 의미한다. 배열 하나를 만들면 배열의 길이만큼 변수를 만들어 내는 것이라고 볼 수 있다. 그렇기에 변수를 일일히 만들지 않아도 되는 효과가 발생한다.

배열 생성

type [] variable; // 배열을 사용할 변수를 선언
variable = new type[length]; // 실제 배열을 생성. length만큼의 저장공간이 생긴다

배열에 접근할때는 인덱스(index)라는 개념을 사용한다. 이는 배열에서 몇번째 순서에 있는지를 의미하는 수치이며, 0부터 시작해서 배열의 길이-1까지의 index를 가진다.만약 범위에 벗어난 index로 접근하고자 하면 에러가 나기 때문에 유의해야 한다.
배열의 길이는 배열 생성시에 정하게 되는데, 길이의 개념이므로 양의 정수만 들어갈 수 있다. 다만 예외적으로 길이가 0인 배열도 생성할 수 있다. 배열의 길이는 상수의 개념이기에 한번 선언하면 변경할 수 없다. 배열의 길이를 변경하고자 한다면 새로운 배열을 만들어야한다.

배열의 초기화 및 초기값 설정

처음 배열을 선언하면 모든 값이 default인 0으로 저장되게 된다. 이 때 초기값을 주어 배열을 선언하고 싶다면 다음과 같이 선언하면 된다.

type [ ] variable = new type[ ] {initial value1,initial value2, ...};

위와 같이 배열을 선언하면 initial value의 개수만큼의 길이를 가진 배열이 생성된다. 앞의 예시와 다르게 선언과 생성을 한줄에서 처리하였는데, 만약 선언과 생성을 같이하는 경우에는 new type[] 부분은 생략할 수 있다.

생성된 배열 출력해보기

생성한 배열을 출력할 때는 for문을 사용하여 일일히 모든 요소를 출력하거나 Arrays.toString(배열이름)을 사용하여 출력해볼 수 있다. toString 메소드를 사용하면 같은 타입의 문자열로 만들어 반환해준다. 배열 이름 자체를 출력하게 되면 배열이 가리키고 있는 주소가 출력되기 때문에 무의미하다.

배열 복사하기

배열을 한번 생성하면 길이값이 상수이기 때문에 변경할 수 없다. 만약 저장해야할 변수의 개수가 많아져 새로운 배열을 생성하고 기존의 배열을 복사해야한다면 다음의 방법들을 사용할 수 있다. 새로운 배열의 길이는 기존 배열의 2배정도로 잡는데, 이는 메모리의 낭비를 최대한 막으면서 배열을 복사해야하는 상황을 최소화하기 위함이다.

  1. for문을 이용하여 기존 배열의 값을 새로운 배열에 일일히 할당한다. 이후, 기존 배열 변수에 새로운 배열 변수를 할당시키면 두 변수 모두 새로운 배열을 가리키게 된다.
  2. System.arraycopy()를 사용하여 처리하는 방법이 있다. for문보다 효율적이다.
System.arraycopy(old array, start index1, new array, start index2, # of copy)

위 식의 의미는 old array의 start index1부터의 값을 new array의 start index2부터 채워넣기 시작하는데, 그 개수는 # of copy와 같다는 것이다.

배열 활용해보기

배열을 사용하면 배열안에 있는 모든 요소의 총합, 평균, 최대값, 최소값 등등의 계산을 간단히 처리할 수 있다. 그 외에도 shuffle, sort, frequency 등의 기능을 구현하는데 사용된다.

Reference

Java의 정석
남궁성의 정석코딩

profile
개발자 지망생입니다.

1개의 댓글

comment-user-thumbnail
2022년 1월 8일

👍

답글 달기