hayu's 개발 일지

[TIL]240219 배열(1) 본문

기술/java

[TIL]240219 배열(1)

hayu00 2024. 2. 19. 21:49

배열이란?

- 같은 타입의 변수를 반복해서 선언하고, 반복해서 사용하는 문제를 풀 때 변수 이름이 달라서 반복문도 사용할 수 없는 경우가 있다. 그런 문제를 해결하는 것이 배열이다. 

- 즉, 배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다.

 

int [] students; // 배열 선언

- 배열을 사용하기 위해서는 int [] students; 와 같이 배열 변수를 선언해야 한다. 

- 일반적인 변수와 달리 int [] 처럼 타입 다음에 대괄호[] 가 들어간다는 점이다. 배열 변수를 선언했다고 배열이 만들어진 것은 아니다. int a 에는 정수를, double b 에는 실수를 담는 것처럼 배열 변수에 배열을 담아야한다. 

 

students = new int[5]; // 배열 생성 

- 배열을 사용하려면 배열을 생성해야 한다. 

- new int[5] 라고 입력하면, 총 5개의 int 형 변수가 만들어진다. new 는 새로 생성한다는 뜻이고 int[5] 는 int 형 변수 5개라는 뜻이다. 즉, int 형 변수 5개를 다룰 수 있는 배열을 새로 만든다는 뜻이다.  

 

배열과 초기화

- new int[5] 라고 하면 총 5개의 int 형 변수가 만들어진다. 자바는 배열을 생성할 때 그 내부값을 자동으로 초기화한다. 

- 숫자는 0, boolean 은 false , String 은 null (없다는 뜻.)로 초기화 된다.

 

배열 사용

인덱스

- 배열은 변수와 사용법이 비슷한데, [] 사이에 숫자 번호를 넣어주는 것에차이가 있다. 배열의 위치를 나타내는 숫자를 인덱스(index)라고 한다.

 

배열은 0부터 시작된다. 

- new int[5] 와 같이 5개의 요소를 가지는 int 형 배열을 만들었다면 인덱스는 0, 1, 2, 3, 4 가 존재한다.

- 인덱스는 0부터 시작된다. 배열의 요소를 5개로 생성했지만. 인덱스는 0부터 시작한다. 즉, 사용 가능 인덱스 범위는 0 ~ (n - 1) 이 된다. 그래서 배열의 마지막 인덱스는 4가 된다.    

 

배열에 값 대입

- 배열의 값을 대입하는 것은 일반적인 변수와 사용법이 같다. 추가로 [] 를 통해 인덱슴나 넣어주면 된다.

 

기본형 vs 참조형

- 자바의 변수 데이터 타입을 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 직접 넣을 수 있는 기본형, 그리고 배열의 변수와 같이 메모리의 참조값을 넣을 수 있는 참조형으로 분류할 수 있다. 

 

기본형(Primitive Type)

- int , long , double , boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다.  

 

참조형(Reference Type)

- int [] students 와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다. 

 

배열 리펙토링

- 리펙토링은 기존의 코드 기능은 유지하되, 내부 구조를 개선하여 가독성을 높이고 유지보수를 용이하게 하는 과정을 뜻한다.

 

기본 코드

int student1 = 90;
int student2 = 80;
int student3 = 70;
int student4 = 60;
int student5 = 50;

System.out.println("학생1 점수: " + students[0]);
System.out.println("학생2 점수: " + students[1]);
System.out.println("학생3 점수: " + students[2]);
System.out.println("학생4 점수: " + students[3]);
System.out.println("학생5 점수: " + students[4]);

- 변수에 값을 넣고, 출력하는 코드이다. 

 

리펙토링 코드1

int[] students; //배열 변수 선언
students = new int[5]; //배열 생성
//변수 값 대입
students[0] = 90;
students[1] = 80;
students[2] = 70;
students[3] = 60;
students[4] = 50;

 //변수 값 사용
for (int i = 0; i < students.length; i++) {
	System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
}

- 배열을 만들어 값을 넣고, 반복문을 사용하여 출력했다.

 

리펙토링 코드2

students = new int[]{90, 80, 70, 60, 50}; //배열 생성과 초기화

for (int i = 0; i < students.length; i++) {
	System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
}

- 배열은 {} 를 사용해서 생성과 초기화를 동시에 하는 기능을 제공한다.

 

리펙토링 코드3

//배열 생성 간략 버전, 배열 선언과 함께 사용시 new int[] 생략 가능
int[] students = {90, 80, 70, 60, 50};

for (int i = 0; i < students.length; i++) {
	System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
}

 

회고

- 배열의 형식에 유의해야 한다고 생각했다. 

int[] students;

students = {90, 80, 70, 60, 50};

이런 형식은 오류가 발생한다는 사실을 알게되었다. 

'기술 > java' 카테고리의 다른 글

[TIL]240223 메서드(1)  (0) 2024.02.23
[TIL]240220 배열(2)  (0) 2024.02.20
[TIL]240212 반복문(2)  (0) 2024.02.12
[TIL]240210 반복문(1)  (1) 2024.02.10
[TIL]240207 JAVA 조건문(2)  (0) 2024.02.07