본문 바로가기
IT/Java

Java 배열 매개변수

by Jeami 2013. 6. 23.
반응형



배열을 매개변수로 사용하는 경우가 많은데요, 간단한 사용예제로 살펴보도록 하겠습니다.

먼저, 배열을 사용하기 위한 클래스를 하나 만듭니다.

자바 배열

CopyKorea 라는 클래스를 만들었습니다. 멤버 클래스로서 작동하고, 프로그램 실행을 위한 main메소드는 public class내에 생성해야만 프로그램이 작동하게 됩니다. *.java 파일을 생성한 후 main메소드가 포함된 public class는 파일명과 같아야 하며 다 하나만 생성할 수 있다는 것을 다시한번 되새기고 넘어가도록 하겠습니다. 

이 클래스내의 Array()메소드는 배열복사를 위해 생성했고, 오버로딩된 메소드입니다. 오버로딩이란 같은 이름의 메소드명을 여러개 생성하는 것인데 매개인자의 타입이나 갯수를 다르게 해 줌으로써 가능합니다. 하나의 메소드가 여러가지 기능을 할 수 있다는 다형성의 개념입니다^^

위의 두 메소드는 배열을 복사하는 기능을 가지고 있습니다. 하나는 매개인자를 하나만 받아오고 다른 하나는 매개인자를 두 개 받아오는 것으로 표현했습니다. 

5번 줄 Array( int [] ar1 ) 에서 ar1 이라는 변수로 배열값을 받아왔을 때, 이 메소드 안에서 복사할 배열을 생성하고, 값을 복사 한 후 리턴값으로 되돌려주고 있습니다. 즉 같은 값을 지닌 배열을 복사하는 기능을 합니다. 단순히 값복사의 의미가 들어있다고 생각하면 될 것 같습니다.


main()메소드가 포함된 public class를 만들어줍니다.

자바 배열



메소드를 호출했을 때 즉, main()메소드가 실행되었을 때 sky에 해당하는 배열의 값이 5번줄 Array()의 매개변수인 ar1으로 값이 복사되게 됩니다.

main()메소드가 실행되면서 작동되는 순서를 하나하나 다시 살펴보겠습니다.

우선 프로그램은 main()메소드를 통해 실행이 되는데, 22번줄의 sky이라는 배열 참조변수에 int형 배열값을 입력했습니다.

그 다음 CK 라는 CopyKorea형 객체를 생성하였습니다.

24번 줄에서 이제 본격적으로 프로그램이 시작된다고 생각되는데요. 배열을 주거니 받거니 하는 것이 시작되기 때문입니다.

int[ ] res = CK.Array(sky) ;

오른쪽부터 살펴볼까요? CK.Array(sky) 는 int형 변수인 sky가 가지고 있는 값 {1, 2, 3, 4, 5}를 CK클래스내의 Array()메소드로 넘겨주라는 의미입니다. 그렇게 되면 Array( int [] ar1 ) 메소드의 ar1이라는 int형 배열 변수가 그 값을 고스란히 담게됩니다. 결과적으로 sky [] = ar1 [] 이라는 의미입니다. 

그럼 왼쪽의 int형 배열 참조변수 res가 그 값을 갖고 있게 되는거죠?  즉 배열을 복사하는 메소드를 호출한 것입니다.

24번~27번 줄은 결과값을 출력해준 것이네요.

그 다음 29번 줄의 int[] tar = new int[ sky.length ] 가 실행되겠네요.

int형 배열 tar라는 변수에 int형 sky변수의 배열을 그대로 넣어준 것입니다. *.length 는 배열의 길이를 의미합니다.

이렇게 변수선언을 해준 후,

30번 줄에서 CK클래스의 Array()메소드에 sky와 tar 값을 넘겨주었네요. 여기서 중요한 개념이 등장하는군요. 오버로딩된 Arrya메소드가 확인되실 겂니다. Array()메소드는 두 가지가 존재하는데 여기서 넘겨준 값은 sky와 tar라는 두 개의 배열 참조변수 값입니다. 따라서 Array()메소드도 이 두개의 값을 매개인자로 받을 수 있는 같은 타입과 매개인자 갯수를 가진 메소드가 실행이 됩니다. Array( int[] ar1, int[] ar2 ) 메소드가 실행되게 됩니다.

31번줄 for문을 통해 결과값을 호출해주었습니다.

프로그램 실행 결과는 아래와 같습니다.


자바 배열


좀, 헤깔리는 부분이 있겠지만 여기선 배열의 값이 계속 복사된다는 개념만 잡고 넘어가면 될 것 같습니다. 실제로 배열을 사용하는데 있어서 개념적인 이해를 일단 하고 가볍게 넘어가주면 되겠습니다.. 물론 완벽히 이해하기위해 노력해야하는것도 반드시 필요하겠지만요^^


반응형

'IT > Java' 카테고리의 다른 글

Generic 제너릭  (0) 2013.06.25
Java 다차원 배열  (0) 2013.06.24
This()  (0) 2013.06.23
Static 메모리만의 특징  (0) 2013.06.23
Static 메모리 작동 예제  (0) 2013.06.23

loading