JAVA

[JAVA와 친해지기] 배열

컴퓨터에는 자료구조라는 것이 있습니다. 자료구조는 컴퓨터에서 [효율적인] 접근과 수정을 가능케 하는 구조입니다. 아래는 여러 가지 자료구조의 예시입니다!

이번 시간에는 이 자료구조 중 배열에 대해서 알아보도록 하겠습니다!


배열이란?

컴퓨터 과학에서 배열(영어: array, 配列·排列, 문화어: 배렬)은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타낸다. 

< 자료형 : 출처 위키백과 https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%97%B4>

배열자료가 일렬로 이어진 자료구조입니다. 단순하게 일렬로만 이어진 자료구조라면 어째서 배열을 사용하는 걸까요? 아래 코드를 예를 들어 보겠습니다.

// Students.java
// 학생3명을 저장하고 이름을 출력하는 코드

public class Students{

	public static void main(String[] args){
		String student1 = "철수";
		String student2 = "영희";
		String student3 = "민수";
			
		System.out.println("student1 : "+student1);
		System.out.println("student2 : "+student2);
		System.out.println("student3 : "+student3);
	}	
}

그렇습니다. 3명을 사용하는데 코드의길이가 많이 깁니다. 문제는 여기서 그치지 않고 학생이 10명, 100명으로 늘어나는 순간, 이 프로그램의 코드는 말도 안 되게 길어지는 단점이 발생합니다. 반복적인 일을 하고 있는데도, 심지어 반복문도 제대로 이용을 못하고 있지요, 이를 위해서 배열이 사용됩니다. 문법적으로 먼저 만나보겠습니다.

그렇습니다. 배열은 한가지종류의 자료형만을 받습니다. 같은 배열에 int, String이 같이 있을 수는 "아직"없습니다. 자료형 뒤에 대괄호[]를 사용한 후 변수 이름을 지정하고, 초기화를 해도 좋고 안 해도 좋습니다. 아래의 코드를 보겠습니다.

// Students.java

public class Students{

	public static void main(String[] args){
		String[] students = {"철수","영희","민수"};	//배열의 선언과 초기화 동시진행 동시에 크기는 3
		//String[] students = new String[3]		//배열의 크기만 잡아줌
			
		System.out.println("student1 : "+students[1]);	//배열요소의 접근은 [인덱스]로 시행
		students[0] = "영수";
        
    		System.out.println("\n 배열의 크기 : "+students.length);	// 배열의 크기출력

		for(int i=0;i<3;i++){
			System.out.println("Student : "+students[i]);
		}
	}	
}

코드를 통해본 배열의 특징은 다음과 같습니다.

  • 배열요소의 접근은 배열 변수[인덱스]로 접근함
  • 인덱스는 0부터 시작. 즉 배열의 크기가 5라면 0~4까지가 배열의 인덱스가 됨(0이 첫 번째 요소)
  • 위를 이용해서 반복문의 효율적인 사용이 가능

배열에 사용되는 자료형은 아무 자료형이나 가능하며, 배열의 크기만 잡아준 주석처리 코드처럼 아무 값도 배열에 부여하지 않은 경우 배열의 요소는 null이 됩니다. 자주 사용하는 프로퍼티로 배열 이름. length를 하면 배열의 크기가 출력됩니다.


이번 시간에는 기본자료구조인 배열에 대해서 알아보았습니다! 다음 시간에는 JAVA를 JAVA 답게 만들어주는, 객체 재향이라는 프로그래밍 기법에 빠질 수 없는 클래스에 대해서 알아보겠습니다!

'JAVA' 카테고리의 다른 글

[JAVA와 친해지기] 생성자  (0) 2021.12.13
[JAVA와 친해지기] 클래스와 객체  (0) 2021.12.01
[JAVA와 친해지기] 반복문  (0) 2021.08.21
[JAVA와 친해지기] 흐름제어문  (0) 2021.08.19
[JAVA와 친해지기] 연산자  (4) 2021.08.18