메서드의 매개변수로 1) 원시 자료형의 값, 2) 객체 형태로 전달할 수 있다. 일반적으로 1) 원시 자료형인 int
, short
, long
등을 매개변수로 넣어서 전달한다. 하지만 두가지 경우 리턴 값이 다르게 나올 수도 있다.
1) 메서드 매개변수로 자료형 전달할 경우
public class Object01 {
// 1. 매개변수로 자료형 전달
int objAdd(int a){
// a는 매개변수안에서만 쓰이는 변수이다.
a++;
return a;
}
public static void main(String[] args) {
int b = 1;
Object01 obj = new Object01();
obj.objAdd(b);
System.out.println(b);
}
}
b를 출력해보면 2일것 같지만 출력값은 다음과 같이 1이다. 그 이유는 메서드 objAdd()
의 매개변수인 int a
는 새로 객체 생성한 obj의 b에 영향을 미치지 않기 때문이다. objAdd()
의 매개변수인 int a 오직 메서드 안에서만 쓰인다.
#출력
1
그래도 objAdd()
메서드를 이용해서 main 메서드의 b 값을 증가 시키는 방법도 있다.
objAdd()
메서드에 main 메서드의 변수인 b를 입력값으로 넘기는데, 돌려받는 값을 다시 b에다 넣는 방법이다. objAdd()
가 실행되어 리턴 값으로 대입되는 것이다.
public class Object01 {
int objAdd(int a){
a++;
return a;
}
public static void main(String[] args) {
int b = 1;
Object01 obj = new Object01();
b = obj.objAdd(b);
System.out.println(b);
}
}
#출력
2
2) 객체 형태로 전달할 경우
다음은 objPlus()
메소드를 객체로 매개변수를 이용했을 경우이다. void
리턴값이 없어도 출력값은 2가 나오게 된다.
[ main 함수 ]
- Object01 클래스의 객체변수 a의 값을 1로 초기화 시켜줬다.
- obj.objPlus(obj)
메소드 호출시 객체(obj)로 전달했더니 메서드를 이용하여 값을 증가시킬 수 있다.
public class Object01 {
int a;
// 2. 객체형태로 전달
void objPlus(Object01 obj){
obj.a++;
}
public static void main(String[] args) {
Object01 obj = new Object01();
obj.a = 1;
obj.objPlus(obj);
System.out.println(obj.a);
}
}
#출력
2
'JAVA' 카테고리의 다른 글
JAVA 객체 직렬화, ObjectOutputStream 그리고 implements Serializable (0) | 2023.11.06 |
---|---|
자바 무슨말인지 모르겠는 제네릭(Generics) 메서드 (0) | 2023.11.04 |