본문 바로가기

Java/실습

[Java] 배열 (Array)

기존 변수는 변수 1개에 1개에 데이터가 들어있찌만

 

배열(Array)은 변수 1개에 데이터가 n개 들어있습니다.

 

배열의 정의는 같은 타입(자료형)의 여러 데이터를 하나의 묶음으로

 

다루는 것입니다.

 

[  ] 이런 형식으로 표기하고

 

배열 속 각각의 데이터를 '요소'라고 부릅니다.

 

이 요소마다 붙여진 일련 번호가 있는데

 

각 요소를 구별하는데 사용합니다.

 

이 일련 번호를 인덱스(Index)라고 하고 

 

시작은 0부터합니다.

 

배열을 생성하려면

 

자료형 [ ] 변수명;

 

이런 식으로 선언하면 됩니다.

 

배열은 길이를 지정하고 초기화해주어야 하는데

 

이런 형식으로 초기화를 하면 됩니다.

 

변수명 = new 자료형 [배열의 길이 갯수];

 

이런 식으로 한번에 선언하고 초기화 할 수도 있습니다.

 

자료형[ ] 변수명 = new 자료형 [배열의 길이 갯수];

 

 

int[] eng = new int[10];

▲1번째 방법

 

즉 이런식으로 선언과 초기화를 

 

한번에 할 수도 있습니다.

 

배열 내에 자료를 초기화 하려면

 

eng[0] = 10;

eng[1] = 20;

eng[2] = 30;

 

이런 식으로 인덱스번호마다 값을 부여할 수 있습니다.

 

배열을 다른 식으로 선언 후 초기화 할 수 있는데

 

int []eng2 = new int[] {10,20,30};

▲2번째 방법

 

이렇게 뒤에 중괄호를 붙이고 순서대로 값을 입력하면

 

선언과 값 초기화까지 한 번에 할 수 있습니다.

 

이때 new int[]는 생략할 수 있어서

 

int []eng2 = {10,20,30};

 

▲3번째 방법

 

이런 식으로 짧게 선언과 초기화를 할 수 있습니다.

 

하지만 이렇게 짜게 되면 배열을 못쓰는 경우가 생길수도 있습니다.

 

그래서 2번째 방식을 알아둘 필요가 있습니다.

 

배열의 데이터에 접근할 떄에는 주로 반복문을 씁니다.

 

for (int i = 0; i<eng.length; i++) {System.out.println(eng[i]);}

 

이런 식으로 배열의 데이터를 한 번에 출력할 수 있습니다.

 

배열은 기본형이 아니라 String 문자열 처럼 참조형이기 떄문에

 

배열에 저장되는 값은 '주소값'입니다.

 

따라서 배열을 그대로 출력하게 되면

 

[I@139a55

 

이런 식의 주소값이 출력되게 됩니다.

 

 

 

배열에는 치명적인 단점이 있는데

 

배열을 선언할 떄 배열의 요소를 정해서 선언하게되면

 

요소의 개수를 초과하면 값을 집어 넣을  수 없는

 

단점이 존재합니다.

 

즉 int [] arr = {10,20};

 

이렇게 선언하게 되면

 

arr[2]값을 출력하려고 하면

 

outofboundindex에러가 뜨게 됩니다.

 

한 번 사이즈를 정해두면 바꿀 수 없기 떄문에

 

사이즈를 모르면 배열을 못만드는 경우도 생깁니다.

 

따라서 Java에서는 잘 사용하지 않습니다.

 

 

 

배열의 특성상 배열안에 배열을 집어 넣을 수도 있습니다.

 

int [] arr = {{1,12},{2,13},{3,13}}

 

이런 식으로 넣을 수 있습니다.

 

System.out.println(arr[a][b]) 

 

그러면 이렇게 출력할 수 있는데 

 

이는 a번쨰오는 b번쨰 요소를 출력하라는

 

의미를 지니고 있습니다.

 

이런 배열을 2차원 배열이라고 합니다.

 

 

2차원 배열 역시도 배열의 단점 중 하나를 보여주는데

 

그 중 하나는 알아보기 힘들다는 점이고

 

주석없이 해석하기 어렵다는 점이 있습니다.

 

 

 

 

이상 배열의 기초적인 개념이었습니다.

 

 

 

 

'Java > 실습' 카테고리의 다른 글

[Java] 함수 파라미터를 무제한으로 거는 법  (0) 2024.11.29
[Java] 약수  (0) 2024.11.29
[Java] ATM기계  (0) 2024.11.29
[Java] 직업에 따라 하는 일  (1) 2024.11.29
[Java] 방정식의 해 구하기  (1) 2024.11.28