[Java]배열의 개념, 선언및 초기화하는 방법+예제
1. 배열이란?
자료형이 같은 데이터를 여러개의 데이터를 묶어서 관리하는 형태이다.
자료형이 같은 변수가 열거되어 있을 때
배열을 사용하면 데이터들을 더 효율적으로 관리할 수 있어 자주 사용된다.
이 배열은 우리 일상생활 속에서도 흔히 볼 수 있다.
예를 들면 학생들의 출석번호는 연속된 숫자로 이루어진 경우가 많은데,
이는 배열과 같은 형태로 묶어서 컴퓨터상에서 관리하기 편하게 하기 위함인 경우가 많다.
따라서 배열은 여러개의 데이터가 묶여있기 때문에
이 데이터들을 인덱스(순서)로 관리하게 되며, 이 인덱스는 0부터 시작한다.
(처음 배열을 접하면 꽤 헷갈릴 수 있는 부분이기에 빨간색으로 해놓았다.)
그렇다면 배열을 어떻게 사용하면 될 지 알아보자.
2. 배열의 선언 및 초기화
먼저 선언은 뭐고 초기화가 무엇인지부터 알고가야 한다.
선언은 컴퓨터에게 해당 자료형의 크기만큼 메모리를 잡아놓도록 하는 것이고
초기화란 메모리를 잡아놓은 변수 안에 값을 집어넣는 것을 말한다.
그래서 만약 선언만 하고 초기화를 안하면 보통 그 변수 안에는 아무 의미없는 데이터(쓰레기값)이 들어가게 된다.
좀 더 부연설명을 하자면 우리가 어떤 자료형의 배열을 n만큼의 길이로 선언하게 되면
다음과 같이 메모리가 잡히게 된다.
그러면 이 배열의 크기는 n*(자료형의 크기)만큼 메모리에서 할당받게 된다고 보면 된다.
그럼 배열을 선언하고 초기화를 해보자.
배열을 선언하고 초기화하여 사용하는 방법에는 크게 두가지가 있다.
2.1. 배열 선언후 초기화하기.
//선언
int[] arr=new int[3];
//초기화
arr[0]=1;
arr[1]=2;
arr[2]=3;
위의 코드로 선언후 초기화를 설명하면 다음과 같다.
1) 배열의 크기를 선언해주기.
여기서는 int(정수형)로 3칸만큼 메모리를 잡아놓았다.
2) 초기화 해주기
위에서 선언한 arr이라는 배열 안에 3개의 int가 들어갈 수 있는 공간이 있는데
이 안에 순서대로 1,2,3이라는 값을 집어넣은 것이다.
2.2. 선언과 동시에 초기화하기.
//선언과 동시에 초기화.
int[] arr={1,2,3};
여기는 비교적 더 간단하다.
위에서 배열의 크기를 얼마나 잡을 것인 지 알려줬던 것에 비해
여기는 집어넣을 데이터들을 바로 {}안에 넣어주면 된다.
3. 예시
다음은 한 학생의 국어,수학, 영어 과목의 성적을 입력받는 코드이다.
String[] subject={"국어","수학","영어"};
int[] score=new int[3];
Scanner scanner=new Scanner(System.in);
System.out.printf("%s의 점수를 입력하세요: ",subject[0]);
score[0]=scanner.nextInt();
System.out.printf("%s의 점수를 입력하세요: ",subject[1]);
score[1]=scanner.nextInt();
System.out.printf("%s의 점수를 입력하세요: ",subject[2]);
score[2]=scanner.nextInt();
System.out.printf("%s 점수: %d",subject[0],score[0]);
System.out.printf("%s 점수: %d",subject[1],score[1]);
System.out.printf("%s 점수: %d",subject[2],score[2]);
scanner.close();
위의 예시 코드는 다음과 같은 과정으로 흘러간다.
1) 과목 배열을 선언과 동시에 초기화.
2) 점수를 넣을 배열을 선언.
3) printf로 subject에 있는 과목이름을 넣어 입력요청 문구를 출력하고 입력받은 값을 score배열에 넣어 초기화 시킨다.
4) 입력받은 값들을 검증하기 위해 출력해본다.
결과를 출력해보면 다음과 같이 출력되는 것을 볼 수 있다.
그리고 추가로 프로그래밍에 처음 접하는 분들이
위의 코드를 보고 의문이 들법한 내용들을 정리해 놓았다.
[참고 사항]
1) String은 문자열 클래스인데 여러 문자들을 한번에 가지고 있는 객체자료형이다. 즉 String[]은 문자열 배열이다.
(char는 기본 자료형이고 String은 객체자료형입니다. String은 char와 달리 여러 문자 데이터를 가지고 있을 수 있습니다. char와 헷갈리시는 분도 계실것 같아 적어보았습니다.)
2) Scanner은 사용자들이 프로그램에게 입력값을 줄 때 사용하는 객체이다.
위의 예시에서는 처음에 Scanner를 new 키워드로 생성해준 뒤, score[0]=scanner.nextInt();라고 하면 사용자가 정수값을 입력하면 그 값이 score배열에 들어가는 구조이다.
3) printf는 콘솔창에 로그를 출력해준다.
예시 코드에서는 printf안에 먼저 출력할 문자를 넣어 주고 그 중에 %s와 %d자리에 각각 출력할 문자 뒤에 넣어준 subject, score값으로 대체되게 된다.
Reference
이 포스팅은 아래의 강좌를 참고하여 만들어졌습니다.
- 자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94_java-renew/dashboard
'Language > Java' 카테고리의 다른 글
[Java]특수문자와 서식 문자,소수점 제한 처리 정리 및 예제 (0) | 2020.08.15 |
---|---|
[Java]배열과 메모리, 다차원 배열 개념 정리 및 예제 (0) | 2020.08.13 |
[Java]자바의 연산자의 종류 및 설명, 예시 (1) | 2020.08.06 |
[JAVA]자료형에 대해 정리해보자(기본자료형과 객체자료형 차이, 기본자료형, 자동 형 변환과 명시적 형 변환) (0) | 2020.07.29 |
[JAVA]변수란 무엇인가? 변수 선언 및 초기화, 메모리 할당 및 데이터 변경 정리 (2) | 2020.07.27 |