티스토리 뷰

반응형


#. 매개변수


> 매개변수

  - 메서드를 호출해서 객체 간 메시지가 전달될 때 부가 정보가 필요한 경우 매개변수 형태로 전달

  - 메서드 매개변수로 전달되는 데이터가 기본형인지 참조형인지에 따라 동작 방식이 달라짐


-----------------------------------------------------------------------------------------


> 값 복사

  - 다른 위치에 두 개의 변수가 동일한 값을 가짐

  - 특정 변수의 값을 수정해도 다른 변수에는 영향을 미치지 않음

1
2
3
4
5
int score = 90;
System.out.println(score);
 
int copyScore = score;
System.out.println(copyScore );
cs


> 값에 의한 호출(Call by value) : 매개변수의 타입이 기본 데이터 타입인 경우

  * 객체가 다른 객체의 메서드를 호출할 때 단순히 메서드 수행에 필요한 값만 넘기고자 하는 경우 사용

  1. 메서드를 호출할 때 넘어가는 실 매개변수(매개변수 값)

  2. 호출되는 메서드의 인자(형식 매개변수)에 복사

  3. 실 매개변수 값은 영향을 받지 않음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
        public static void main(String[] args) {
                int score = 10;
                // print : score = 10
 
                changeScore(score);
 
                // result_print : score = 10
        }
        
        private static int changeScore(int score) {
                score = 100;
                // method_print : score = 100
 
                return score;
}
cs


-----------------------------------------------------------------------------------------


> 주소 복사

  - 같은 위치에 두 개의 변수가 참조

  - 특정 변수로 배열의 값을 수정하면, 동일한 객체를 참조하는 다른 변수도 수정된 값을 인식

1
2
3
4
5
int[] list = {9085100};
System.out.println(list[0]);
 
int[] copyList = list;
System.out.println(copyList [0]);
cs


> 주소에 의한 호출(Call by reference) : 매개변수의 타입이 참조 데이터 타입인 경우

  * 메서드 수행 이후에도 수행 결과를 지속적으로 유지하고자 하는 경우 사용

  - 참조형 매개변수는 참조하는 객체의 주소 값이 복사되어 전달

  - 같은 객체의 주소를 가지기 때문에 하나의 객체를 두 개의 참조변수가 공유

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Test {
        public static void main(String[] args) {
                int scoreList = {9085100};
                // print : score = 90, 85, 100
 
                changeScore(scoreList);
 
                // result_print : score = 100, 100, 100
        }
        
        private static int[] changeScore(int[] scoreList) {
                scoreList[0= 100;
                scoreList[1= 100;
 
                // method_print : score = 100, 100, 100
 
                return score;
}
cs


-----------------------------------------------------------------------------------------


> 가변적 매개변수

  - 매개변수의 숫자를 컴파일이나 실행 시에 미리 지정하지 않는 방식

  - 하나의 메서드만 정의하여 매개변수의 개수를 가변적으로 사용하는 방식

  - 여러개의 매개변수와 같이 사용 가능. 

    단, 메서드 선언부의 매개변수 리스트 마지막 위치에서 딱 한 번만 사용 가능

1
2
3
int add(String s, int... i) {
        ...
}
cs


> 사용 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Test {
        public static int Sum(int... num) {    // 가변적 매개변수를 사용한 메서드
                int sum = 0;
                for(int i=0; i<num.length; i++) {    // 가변적 매개변수로 넘어온 값들은 반복문으로 
                    sum += num[i]
                }
            return sum;
        }
 
        public static void main(String[] args) {
                System.out.println(Sum(1));
                System.out.println(Sum(12));
                System.out.println(Sum(123));
}
cs



출처 : SW Expert Academy


반응형

'Web > JAVA' 카테고리의 다른 글

[JAVA] 자바의 Modifier (static, final, abstract)  (0) 2019.08.05
[JAVA] Eclipse에서 JAVA로 디버깅하기  (2) 2019.07.26
[JAVA] this()의 의미와 사용  (0) 2019.07.26
[JAVA] 생성자 Overloading  (0) 2019.07.26
[JAVA] 메서드 Overloading  (0) 2019.07.26
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday