POST

JAVA 배열(Arrays)의 활용과 팁(tip)

배열(Arrays)이란? - 바로가기


배열을 사용할때 사용자가 0이아닌 임의의 수로 초기화를 하고 싶을 때는 어떻게 하여야 할까?

0을로 초기화를 하기 위해서는 그냥 객체를 생성해주면 자동으로 0으로 초기화가 이루어진다.

하지만 사용자가 원하는 수로 초기화 하는 방법에는 약간의 차이가 있다


일반적인 배열의 선언과 객체생성 그리고 0으로 초기화

int[] num = new int[10];


사용자가 원하는 수로 초기화

int[] num = new int[] {10,20,30,40,50,60};

이렇게 작성할 수 있다.

배열의 갯수를 적지않는 이유는 주어진 초기값의 갯수만큼 자동으로 배열을 생성해주기 때문이다.


한가지 팁이라면 저 문장에서 굳이 new를 사용하여 생성을 하지 않아도 된다. 모든것이 자동으로 생성이 된다.

아래의 코드와 같이 사용하는것이 작성하기 편할 것이다.

int[] num = {10,20,30,40,50,60};


for-each 루프

JDK 1.5버전부터는 배열에 대하여 for-each루프라는 향상된 반복문을 사용할 수 있다.

for-each루프라는 것은 전통적인 for 반복문과는 사용 방법이 다르며 쓰이는 곳도 제한이 된다.

일단, 아래의 코드를 보자.

int[] num = {10,20,30,40,50,60};

for(int value:num) {

System.out.println(value);

}

여기서 num이라는 배열의 데이터를 0번째부터 마지막까지 value라는곳에 대입된다.

이 반복문은 단순히 첫번째 원소부터 마지막 원소까지 차례대로 원소의 값을 꺼내어 처리하는 경우에는 훨신 더 사용하기 편리하다.

하지만, 역순으로 처리를 한다거나 특정 원소를 꺼내어 처리를 하는 경우에는 전통적인 for 루프 반복문을 사용하여야한다.

전통적인 for루프 반복문이란 그냥 여러분들이 아는 for반복문이다.


그리고 한가지 더, 이 for루프를 유용하고 효과적으로 사용하는 방법을 알아보자.


보통 배열을 만들면 해당 배열의 수를 알아야 for반복문을 사용할 수 있다.

하지만 그것을 알지 못한다면 하나하나 일일이 세야할 것 이다.

이러한 수고를 덜기위해 length라는 메소드를 사용하는 것이 좋다.


아래의 코드를 살펴 보자.

int[] num = {10,20,30,40,50,60};

for(int i=0;i<num.length;i++) {

System.out.println(num[i]);

}

위처럼 length()라는 메소드를 사용하게 되면 굳이 배열의 갯수를 알지 않아도 되며 코드를 잘못 작성하는 일이 없을것이다.

그리고 만약 배열을 수정했을 경우 일일이 모든 반복문을 수정을 하지않아도 된다.


이 length()라는 메소드는 String이라는 자바 기본 클래스에 있으며 

해당 문자열 또는 배열의 길이를 int형(정수형)으로 반환을 한다.

String 클래스의 자주 사용되는 메소드 - 바로가기




배열의 길이를 사용자가 입력한 만큼 생성하기

위에서 배열의 초기값을 설정 하였다면 이번에는 사용자가 입력하는 만큼 배열의 길이를 설정 하여 보자.

방법은 간단하다. 코드를 보도록 하자

public class Test {

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input = new Scanner(System.in); // Scanner 객체 생성

int size;

size=input.nextInt();

int[] num = new int[size]; // 배열의 선언과 객체 생성

for(int i=0;i<num.length;i++) {

System.out.println(num[i]);

}

}

}

우성 사용자로부터 숫자를 입력받기 위한 정수형 변수를 선언하자.(size)

이후에 size에 입력받은 수를 대입하고, 배열num을 선언후 객체를 생성하는 것이다.

여기서 주의 할점은 반드시 size라는 변수에 수를 대입하기 전에 배열을 생성하면 안된다는 것이다.

그 이유는 컴파일러가 위에서 부터 아래로 명령어를 읽기 때문이다.