▸JAVA/기본 문법

1차원배열_생성/초기화/사이즈변경/출력 [1/2]

코데방 2019. 12. 10.
728x90

기본적으로 C언어의 배열과 비슷한 개념이고 비슷한 구조를 가지고 있습니다. 다만 C언어보다 조금 더 기능이 많고 특히 Arrays 클래스에 포함되어 있는 편리한 메소드가 많습니다.

 


[ 배열 생성 및 초기화 ]

필드의 경우 값을 주지 않고 생성만 하면 해당 타입의 기본값이 들어갑니다. 정수형이나 실수형이라면 0이 기본값이 될 것이고, 문자열이나 객체라면 null값이 기본입니다. 여러 가지 방법으로 생성 및 초기화가 가능합니다. 직접 값을 하나씩 넣거나 반복문으로 처리하는 초기화는 제외했습니다. 참고로 메소드 내에서 생성되어 스택 영역에 생기는 변수는 초기화가 자동으로 되지 않으니 꼭 직접 초기화를 해줘야 합니다.

package study.first;

public class Main {

	public static void main(String[] args) {
		
		/* 배열 생성 및 초기화 */
		int[] arr1 = new int[5];
		int[] arr2 = {1,2,3,4,5};
		int[] arr3 = new int[] {1,2,3,4,5};
		
		
		/* 껍데기만 만들어두고 한번에 초기화 가능 */
		int[] arr4;
		arr4 = new int[] {1,2,3,4,5};

		/* 메소드의 인자값으로 전달할 때 */
		test(arr2);  // C언어의 배열 포인터 전달과 동일
		test(new int[] {1,3,2,4,5});  // 해당 형식으로 바로 생성 및 초기화 해서 전달 가능 
	}
	
	
	public static void test(int[] arr) {
		
		System.out.println(arr[1]);
	}
}

 


 

[ 배열의 사이즈 변경 및 출력 ]

사이즈 변경은 C언어에서 malloc을 통해 새로운 사이즈의 배열을 하나 만들고 복사해서 옮겨주는 것과 동일합니다. 대신 C언어에서는 직접 함수를 만들어야 하고 Java에는 배열을 관리하는 Arrays 클래스의 메소드에 포함되어 있습니다. 또한 출력도 원래 반복문을 돌려서 하나하나 출력하지 않아도 Arrays 클래스에서 오버라이딩 되어 있는 toString 메소드를 사용하면 매우 간단합니다. 물론 무분별한 클래스 import는 성능 저하를 유발할 수 있으므로 간단한 메소드 하나를 호출하기 위해 전체 클래스를 import 시키는건 비효율적이긴 합니다. 

 

추가로 Java에서는 C언어와 다르게 컬렉션 프레임워크라는 기능을 이용해 크기가 고정돼 있지 않으면서 다수의 데이터를 저장할 수 있기 때문에, 초기에 사이즈를 예측할 수 없는 데이터 집단이라면 배열보다 이를 활용하는 편이 더 효율적입니다.

 

배열을 다루는 메소드를 사용하기 위해서는 Java.util.Arrays를 import 시켜줘야 합니다. 그리고 해당 클래스에 포함된 메소드를 아래와 같이 사용하면 됩니다.

 

package study.first;

import java.util.Arrays;

public class Main {

	public static void main(String[] args) {		

		int[] arr = {1,2,3,4,5};
		
		// argument : 원본배열, 새로 생성할 사이즈
		int[] arr2 = Arrays.copyOf(arr, arr.length + 5);	

		arr2[5] = 10;
                // Arrays 클래스에서 오버라이딩 된 배열용 toString		
		System.out.println(Arrays.toString(arr2));		
	}
}

 


 

굳이 Arrays 클래스를 사용하지 않고 자체적으로 해결하려면 아래와 같이 작성하면 됩니다. 배열의 길이는 구하는 방법은 배열이름.length입니다.

 

package study.first;

public class Main {

	public static void main(String[] args) {		

		int[] arr = {1,2,3,4,5};
		
		// 신규 배열 생성
		int[] arrNew = new int[10];
		
		// 배열 복사
		for (int i = 0; i < arr.length; i++)	
			arrNew[i] = arr[i];
		
		arrNew[5] = 10;
		
		// 배열 출력
		for (int i = 0; i < arrNew.length; i++)
			System.out.print(arrNew[i] + " ");		
	}
}

 


 

배열 출력은 확장 for문을 사용할 수도 있습니다. for(배열타입 변수 : 배열이름) 형태입니다.

package study.first;

public class Main {

	public static void main(String[] args) {
	
		int[] arr = {0,1,2,3};
		
		for (int num : arr) {
			System.out.println(num);
		}
	}
}
728x90

댓글

💲 추천 글