티스토리 뷰


메소드에 변수값 자체를 전달하는 경우 

public void countUp(int cnt) {

cnt++;

}


public static void main(String[] args) {

int cnt =0;

TestObject test = new TestObject(); // TestObject라는 객체 생성

test.countUp(cnt);

System.out.println("cnt값 : "+cnt);

}

결과

cnt값 : 0

cnt값이 1로 증가할 것 같지만 증가하지 않는다. 이유는 countUp() 메소드 안에서 쓰이는 cnt 변수는 main 메소드 안에있는 cnt와 이름만 같을뿐, 영역(?)이 다르다. 각자의 메소드 안에있는 변수값들은 해당 메소드 안에서만 쓰인다.

상단의 countUp 메소드는 하단처럼 정의한 것과 다르지 않다.

public void countUp(int cntOther) {

cntOther++;

}



그렇다면 cnt값을 증가시키려면 어떻게 해야할까?

객체 자체를 넘겨주면된다.

메소드에 객체 자체를 전달하는 경우

public void countUp(TestObject test) {

test.cnt++;

}


public static void main(String[] args) {

int cnt =0;

TestObject test = new TestObject(); 

test.countUp(test); // test객체 자체를 countUp에 넘겨줌.

System.out.println("cnt값 : "+cnt);

}

결과

cnt값 : 1



cnt값을 객체로 전달하지 않고도 변수값만 주고도 증가시키고 싶으면 어떻게 할까?

return값을 주면된다 (간단함) 대신 기존에 countUp 메소드의 리턴 자료형을 void에서 변경해줘야 한다. (void면 return값을 줄 수가 없으므로)

public int countUp(int cnt) {

cnt++;

return cnt

}


public static void main(String[] args) {

int cnt =0;

TestObject test = new TestObject(); // TestObject라는 객체 생성

test.countUp(cnt);

System.out.println("cnt값 : "+cnt);

}

결과

cnt값 : 1



'Java' 카테고리의 다른 글

스태틱 메모리 생성시점  (0) 2017.02.06
자바 접근제어 private와 public 구체적인 예  (0) 2017.02.06
자바 추상클래스, 추상메소드  (0) 2017.02.06
자바 인터페이스와 상속 정리  (0) 2017.02.06
접근제어자  (0) 2017.02.06
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함