자바의 배열(array)
배열은 같은 타입의 데이터를 연속된 공간에 나열하고 각 인덱스(index)를 부여한 자료구조입니다.
음 쉽게 말해서 상자 안에 여러 데이터를 넣고 그걸 차례대로 쓰는 것이죠.
구글에서 찾아본 이미지로는 이런 이미지인데
위처럼 상자 안에 여러 데이터를 넣는 걸 말합니다.
조금 특별한 특징이라면 자바에서는 다른언어(python, JS)등에 비해 좀 더 엄격하게 타입을 관리하기 때문에
int, String, double 등의 타입을 항상 선언해야합니다.
이 부분은 안 읽으셔도 됩니다.
왜 그런가 좀 알아보니까, 엄격하게 타입을 관리할수록 안전하다고 합니다.
1가지 이유에대해 예를 들어보자면, JS에서는 이런 타입선언에 민감하지 않아서 변수 쓰고 아무 타입의 데이터를 저장할 수 있습니다. 그런데 이렇게 되면 유저가 뭘 찾아달라고 하면 한 배열 안에 여러 가지 타입의 변수들이 있어 찾기 어려워집니다. 그래서 요새는 타입을 관리하지 않는 언어에서도 TypeScript와 같은 라이브러리를 사용하는 게 필수라고 합니다.
배열을 선언하는 방법
배열을 선언하려면 [](대괄호)를 변수의 타입뒤나 이름뒤에 쓰실 수 있습니다.
타입[] 변수 혹은 타입 변수[]
이런식으로 말이죠
가장 많이 쓰는 건 타입[] 변수입니다.
지금 선언하는 건 1차원 배열 선언이고
또 다른 2차원 배열을 선언하는 것도 있어 자주 쓰인다고 합니다.
배열 초기화하기
배열을 초기화하는 방법:
타입[] 변수 = new 타입[길이]
여기서 헷갈릴 수 있는 부분이 길이를 설정하는 건데
예를 들면
int[] number = new int[3] 이런 식으로 길이를 설정하면
number[0]
number[1]
number[2]
까지 쓸 수 있습니다.
배열의 특징 중 하나입니다.
index는 0부터 시작하기 때문에 길이를 3으로 설정하면
0,1,2까지 3개까지 값을 넣을 수 있습니다.
배열에 값 넣기
위에서 한 것처럼 초기화한 뒤에
변수[인덱스] = 값
이런 식으로 값을 넣어줄 수 있습니다.
number[0] = 13
number[1] = 12
number[2] = 10
좀 번거롭지 않습니까?
그래서 다른 방법으로
int [] number = {13,12,10}
이런 식으로 초기화하면서 선언할 수 있습니다.
함수가 궁금하다면 따로 찾아보시고
근데 함수의 파라미터로 배열을 사용한다면 에러가 발생하는 경우가 있습니다.
예를 들어
public class Main {
public static void main(String[] args) {
System.out.println(add({10,20}));
}
public static int add(int[] numbers) {
return numbers[0] + numbers[1];
}
}
이런 경우가 있는데
이런 식으로 쓰면 컴파일 에러가 뜹니다.
이를 해결하려면
System.out.println(add(new int[]{10, 20}));
add 함수를 사용한 부분에서 new int []를 값들의 앞에 사용하면 됩니다.
근데 사실 저런 식으로 배열을 넣는 경우는 거의 없습니다.
배열 값 출력하기
그냥 변수[인덱스]로 출력할 수 있지만,
보통 for문을 배열과 함께 자주 사용하는데, 요. length 메서드 덕분인 것 같습니다.
array.length를 하면 배열의 인덱스 개수를 자동으로 새 줍니다.
이런 고마운 메서드는 기억해 둡시다,
public class Main {
public static void main(String[] args) {
int[] array = {10,12,11};
for (int i = 0; i < array.length; i++) {
System.out.printf("array[%d] = " + array[i] + "\n",i);
}
}
}
위에 입력한 것처럼 하면
array[0] = 10
array[1] = 12
array[2] = 11
이런 식으로 나옵니다.
Arrays.toString이란 메서드도 있는데 자주 사용하진 않는다.
궁금하면 찾아보면 됩니다.
핵심요약
배열 선언은
타입[] 변수 = {값 1, 값 2,...};
배열 출력은
for문을 이용해서 하면 편하다.
length메서드를 기억하자
index는 0부터 시작한다.
기초적인 요약은 이 정도입니다.
'Java' 카테고리의 다른 글
[Java] 컬렉션(Collection) 정리 #1 List (2) | 2024.01.11 |
---|---|
[Java] Generic 정리 (2) | 2024.01.05 |
[Java]클래스 정리 및 OOP 4가지 특징 (2) | 2024.01.04 |