일단 시작해보는 블로그

[Java] call by value 본문

개발/Java

[Java] call by value

Selina Park 2019. 8. 8. 16:08

메소드로 객체를 전달할 경우 메소드에서 객체의 객체변수(속성) 값을 변경할 수 있다.

 

 

다음 예제는 input값을 primitive type으로 넣어준 것. 즉, 아무리 Main클래스의 객체의 속성을 update함수에서 바꾸려고 해도 바뀌지 않는다.

//Main.java

class Updater {
    public void update(int count){
        count++;
    }
}

public class Main {
    int count = 0;
    public static void main(String[] args) {
        Main a = new Main();
        System.out.println("before : " + a.count);
        Updater b = new Updater();
        b.update(a.count);
        System.out.println("after : " + a.count);
    }
}


// 결과
// before : 0
// after : 0

[** 한 class 파일 내에서는 여러 클래스들이 존재할 수 있지만, Main.java파일이라면 Main클래스는 public으로 선언해주는 관례가 있다. **]

 

 

Main 클래스의 속성인 count의 값을 바꿔주고 싶다면 update의 input값으로 객체를 넣으면 된다.


class Updater {
    public void update(Main a){
        a.count++;
    }
}

public class Main {
    int count = 0;
    public static void main(String[] args) {
        Main a = new Main();
        System.out.println("before : " + a.count);
        Updater b = new Updater();
        b.update(a);
        System.out.println("after : " + a.count);
    }
}

// 결과
// before : 0
// after : 1


 

 

 

[REFERENCE]

https://wikidocs.net/265

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

'개발 > Java' 카테고리의 다른 글

[Java] HashMap  (0) 2019.08.21
[Java] 문자열 포맷 - String.format(), System.out.printf()  (0) 2019.08.20
[Java] 정적 변수와 메소드 (static)  (0) 2019.08.08
[Java] 메소드  (0) 2019.08.08
[Java] Scanner, 입출력 클래스  (0) 2019.08.05
Comments