java - 배열(array)

yunzivv·2025년 3월 10일

JAVA 기초

목록 보기
9/23

배열(array)


배열은 자료형의 집합이다. 같은 자료형을 가진 데이터들을 한번에 제어하고 싶을 때 사용한다.
예를 들어 강낭콩, 완두콩, 팥콩이라는 문자열 집합은 강낭콩, 완두콩, 팥콩이라는 하나의 문자열로 표현하거나 각각의 변수 3개를 만들어 대입하는 방법이 있다. 이 방법은 코드가 너무 길어지고, 집합의 개념이 연상되지 않는다. 이럴 때 배열을 사용한다.

python의 리스트가 다양한 자료형을 저장하는 것과 달리 배열은 같은 자료형의 데이터만 저장할 수 있다.

java에서 배열 선언과 값 대입


1. 선언과 동시에 초기화
1) 자료형[] 변수명

int[] num = {1, 2, 3};

2) 자료형 변수명[]

String day[] = {"월", "화", "수"};

2. 선언 후 나중에 초기화

  • 배열을 선언할 때 값을 저장하지 않으려면 배열의 길이를 먼저 정해 줘야 한다.
  • 한 번 길이를 정한 배열은 다시 길이를 늘리거나 줄일 수 없다.
    -> 새로운 배열 생성하고 기존 값 복사하는 해결 방법을 사용해야한다.
int[] a = new int[3];
a[0] = 5;
a[1] = 6;
a[2] = 7;

배열 접근


순서대로 정렬된 배열의 데이터에 접근하는 방법은 인덱스를 사용하는 것이다.
배열변수명[인덱스번호] 형식으로 작성한다. 배열의 데이터는 순서대로 0부터 시작하는 인덱스번호를 가진다.

//  인덱스 : a[0] a[1] a[2]
int[] ten = {10,  20,  30};
System.out.println(ten[1]);
출력
20

배열 길이 구하기


배열 길이가 필요한 경우 length함수로 배열의 길이를 구할 수있다.

int[] ten = {10, 20, 30};
int len = ten.length; // 변수 len에 ten에 저장된 배열의 길이를 저장
System.out.println(len);
출력
3

📌 업데이트 : 배열 출력


배열 전체를 출력하고 싶어서 python에서 리스트를 출력할 때와 같은 방식으로 System.out.println(배열변수)로 작성했더니 [I@7291c18f 같은 이상한 문자열이 출력됐다.

java에서 배열은 참조타입이기 때문이다.

int[] ten = {10, 20, 30};
System.out.println(ten);
출력
[I@7291c18f

배열변수를 출력하면 배열변수 ten이 가르키는 배열이 저장된 주소를 출력한다. 배열이 객체이고 참조 타입이기 때문이다. 배열변수 ten은 실제 데이터가 아닌 배열 객체의 리모컨(주소)를 저장한다. (기본 타입 8개를 제외한 나머지는 모두 참조 타입이다.)

출력문 [I@7291c18f에서

  • [ -> 배열임을 나타냄
  • i -> int(정수형)임을 나타냄

그렇다면 배열 전체를 출력하고 싶을 땐 어떻게 하면 될까

1. Arrays.toString()

Array.toString()은 배열의 내용을 문자열로 변환해주는 함수이다.
java의 java.util.Arrays 클래스에 포함이 되어 있기 때문에 java.util.Arrays를 꼭 import해줘야한다.

  • 예시코드
int[] ten = {10, 20, 30};
System.out.println(Arrays.toString(ten));
출력
[10, 20, 30]

2. 반복문과 인덱스 사용

  • 예시 코드
int[] ten = {10, 20, 30};
for (int i = 0; i < ten.length; ++i){
	System.out.print(ten[i] + ", ");
    }
출력
10 20 30 

python의 리스트를 배울 땐 다양한 자료형을 함께 저장할 수 있고 변수를 활용해서 전체를 출력할 수도 있어서 쉬웠다.
처음엔 java의 배열이 python의 리스트와 비슷한 모양새라 배열 역시 쉬울 것이라고 생각했다. 하지만 예상과는 다르게 실행되고 배울 내용이 많았다. 같은 데이터의 집합인 것만 빼고 다 다른 것 같다.
java의 배열을 다루는 방법이 더 어려운만큼 배열을 더 잘 활용할 수 있도록 해야겠다.

0개의 댓글