본문 바로가기
Back/JAVA

배열(Array)

by 시월해 2021. 3. 3.

* 배열(Array)?
- 하나의 이름으로 동일한 자료형의 데이터를 여러 개 연속적으로 저장할 수 있는 메모리 공간을 할당 받는 것을 말함

- 변수는 하나의 값만을 저장하지만, 배열은 여러 개의 값을 저장할 수 있음.
- 같은 자료형의 데이터들이 순차적으로 저장됨.
- 배열은 선언과 동시에 저장할 수 있는 데이터 타입이 결정이 됨.
   만약 다른 타입의 데이터를 저장하려면 타입 불일치 컴파일오류가 발생함.
- 배열의 방의 이름은 0이라는 인덱스부터 시작함.
- 배열의 단점 : 배열은 한 번 크기가 정해지면 크기를 늘리거나 줄일 수 없음.
  
[배열 사용하는 방법]
 - 1단계 : 배열 선언(자료형[] 배열명, 자료형 배열명[])
 - 2단계 : 배열 메모리 생성(메모리 할당 : 배열명 = new 자료형[배열의 크기])
 - 3단계 : 배열 초기화(할당된 메모리 영역에 데이터를 저장)
 - 4단계 : 배열을 이용(데이터 처리 = 연산, 출력 등)
  
 [배열의 생성 방법 - 2가지]
 1. new 키워드를 사용하여 배열 생성
 2. 배열의 초기값을 이용하여 배열 생성

 

* length 속성

- 배열의 크기(길이)를 알려주는 키워드.

- 배열의 크기(길이)를 정수값으로 알려줌.

형식) 배열명.length

예) int size = arr.length


기본예제)

	public static void main(String[] args) {
		
		// 1단계 : 배열 선언(자료형[] 배열명, 자료형 배열명[])
		//int[] score;
		
		// 2단계 : 배열 메모리 생성(메모리 할당 : 배열명 = new 자료형[배열의 크기])
		//score = new int[5];
		
		// 1단계 + 2단계 : 배열 선언 및 배열 메모리 생성
		int[] score = new int[5];
		
		// 3단계 : 배열 초기화(할당된 메모리 영역에 데이터를 저장)
		score[0] = 10;
		score[1] = 20;
		score[2] = 30;
		score[3] = 40;
		score[4] = 50;
		
		// 4단계 : 배열을 이용(데이터 처리 => 연산, 출력 등)
		score[2] += 100;
		score[3] *= 3;
		
		// score 배열에 들어가 있는 데이터들을 출력해보자.
		System.out.println("score[0] >>> " + score[0]);
		System.out.println("score[1] >>> " + score[1]);
		System.out.println("score[2] >>> " + score[2]);
		System.out.println("score[3] >>> " + score[3]);
		System.out.println("score[4] >>> " + score[4]);
		
		// 반복문을 이용하여 출력해보자.
		for(int i=0;i<5;i++) {
			System.out.println("score["+i+"] >>> " +score[i]);
		}
		
		
	}

단순 출력과 for문 출력이 같은 결과를 보인다.


예제1)  가고 싶은 5개 나라를 키보드로 입력받아 배열에 저장해보자

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		// 1단계 : 5개 나라가 저장될 배열 선언
		String[] nation = new String[5];
		
		for(int i=0; i<5; i++) {
			System.out.print((i+1)+"번째 나라 입력>>> ");
			nation[i] = sc.next();
		}
		
		// 배열에 저장된 5개 나라를 출력해보자.
		for(int i=0; i<5; i++) {
			System.out.println((i+1) + "번째 나라 >>> " + nation[i]);
		}
        
}

결과


예제2) 키보드로 배열의 크기를 입력 받아 정수를 저장하자.

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("배열의 크기를 입력하세요.");
		
		//int size = sc.nextInt();
		
		int[] arr = new int[sc.nextInt()];
		
		for(int i=0; i<arr.length; i++) {
			System.out.print((i+1)+"번째 정수 입력 >>> ");
			arr[i] = sc.nextInt();
		}
		System.out.println();
		
		for(int i=0; i<arr.length; i++) {
			System.out.println("arr["+i+"] >>> " + arr[i]);
		}
		
		sc.close();
	}

입력한 정수에 따라 배열 크기가 설정된 것을 볼 수 있다.


예제3) 배열의 크기를 입력 받아 지정하고, 정수형 타입의 데이터를 입력 받아 문자열로 변환한 후 해당 문자열을 검색해보자.

public class Ex07 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("문자열 배열의 크기 : ");
		
		String[] str = new String[sc.nextInt()];
		
		for(int i=0; i<str.length; i++) {
			System.out.print((i+1)+"번째 문자열 입력 >>> ");
			str[i] = sc.next();
		}
		
		System.out.println();
		
		// 문자열 배열에 저장된 하나의 문자열을 검색
		System.out.print("검색할 문자열 입력 : ");
		String search = sc.next();
		
		for(int i=0; i<str.length; i++) {
			if(search.equals(str[i])) {
				System.out.println("찾은 문자열 >>> " + str[i]);
				System.out.println("찾은 인덱스 >>> str["+i+"]");
			}
		}
		
		sc.close();

	}

결과


예제4) 배열의 크기를 키보드로 입력 받고 입력 받은 배열의 크기만큼 키보드로 정수를 입력 받아서 최대값과 최소값을 화면에 출력

 

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("배열의 크기 입력 : ");
		int[] arr = new int[sc.nextInt()];
		
		// 최대값 변수, 최소값(99->두자리수 제한) 변수 선언
		int max = 0, min = 99;
		
		// 배열에 키보드를 이용하여 임의의 정수를 입력을 받자.
		for(int i=0; i<arr.length; i++) {
			System.out.print((i+1)+"번째 정수 입력 >>>");
			arr[i] = sc.nextInt();
			
			// 최대값을 구해 보자.
			if(arr[i] > max) {
				max = arr[i];
			}
			
			// 최소값을 구해 보자.
			if(arr[i] < min) {
				min = arr[i];
			}
		}
		
		System.out.println("최대값 >>> " + max);
		System.out.println("최소값 >>> " + min);
		
		sc.close();

	}

결과