#메쏘드
렇다면 vartest라는 메소드를 이용해서 메소드 외부의 a를 1만큼 증가시킬 수 있는 방법은 없을까?
다음과 같이 vartest메소드와 main메소드를 변경해 보자.
public class Test{
public int vartest(int a) {
a++;
return a;
}
public static void main(String[] args) {
int a = 1;
Test myTest = new Test();
a = myTest.vartest(a);
System.out.println(a);
}
}
해법은 위 예처럼 vartest메소드에 return문을 이용하는 방법이다. vartest 메소드는 입력으로 들어온 값을 1만큼 증가시켜 리턴한다. 따라서 a = myTest.vartest(a)
처럼 하면 a의 값은 다시 vartest메소드의 리턴값으로 대입된다. (1만큼 증가된 값으로 a의 값이 변경된다.)
//myTest.a 는 아무런 변화가 없이 0인 상태로 있게 된다.
If you want to change selection, open document below and click on "Move attachment"
5-2 메쏘드13;
※ 만약 vartest의 입력값이 int 자료형이 아닌 객체였다면 얘기가 다르다. 객체를 메소드의 입력으로 넘기고 메소드가 객체의 속성값(객체변수 값)을 변경한다면 메소드 수행 이후에도 객체는 변경된 속성값을 유지한다. 이러한 차이가 나는 이유는 메소드에 전달하는 입력 자료형의 형태 때문인데 메소드에 값을 전달하느냐 아니면 객체를 전달하느냐에 따라 차이가 난다.
그<span>렇다면 vartest라는 메소드를 이용해서 메소드 외부의 a를 1만큼 증가시킬 수 있는 방법은 없을까?
다음과 같이 vartest메소드와 main메소드를 변경해 보자.
public int vartest(int a) {
a++;
return a;
}
public static void main(String[] args) {
int a = 1;
Test myTest = new Test();
a = myTest.vartest(a);
System.out.println(a);
}
해법은 위 예처럼 vartest메소드에 return문을 이용하는 방법이다. vartest 메소드는 입력으로 들어온 값을 1만큼 증가시켜 리턴한다. 따라서 a = myTest.vartest(a) 처럼 하면 a의 값은 다시 vartest메소드의 리턴값으로 대입된다. (1만큼 증가된 값으로 a의 값이 변경된다.)
이번에는 아까 잠깐 언급한 객체를 넘기는 방법에 대해서 알아보자.
다음의 예를 보자.
public class Test {
int a; // 객체변수 a
public void vartest(Test test) {
te Summary
status | not read | | reprioritisations | |
---|
last reprioritisation on | | | suggested re-reading day | |
---|
started reading on | | | finished reading on | |
---|
Details