값에의한 호출

Call By Value/Reference

  1. Call By Value: 값에 의한 호출

    • 보통 숫자 계열 값을 메소드 호출시 메소드로 전송하는 경우가 해당이 됩니다.

    • 메소드로 한 문자, 상수 문자열, 숫자를 전달하면 전부 값에의한 호출이라고 하고 Call By Value 라고 합니다.

Pay1.java

package classtest;
class Pay1{
String name="";   //직원 이름
int pay=0;        //급여
int comm=0;       //보너스
int tax=0;        //세금

public Pay1(){ }


public void name(String name){
[this.name](http://this.name/) = name;
}


public void tax(float f){
    tax = (int)(pay * f);
}

public void pay(int pay){
   this.pay= pay;
}

public void comm(int comm){
   this.comm = comm;
}

public int earn(){
    int total = (pay + comm)-tax;
    return total;
}


}

Employee_arg.java

Call By Reference: 참조값에 의한 호출(Hash Code)

  • 메소드로 참조type을 전송할 수 있습니다.

  • 메소드로 클래스의 객체를 전달하면 메모리가 전달되는 것이 아니라 객체를 가르키고있는 Hash Code가 전달됨으로 Call By Reference 라고 합니다.

  • Call By Reference의 경우 참조값(Hash Code)을 전달한 객체는 자신의 참조값이 전달됨으로 값의 변화가 발생할 수 있고 heap memoey를 공유하게 됩니다.

Call By Value/Reference 예제

Pay.java

PayTest.java

Ref.java, 데이터 클래스

RefMgr.java, 데이터 조작 클래스

RefUse.java 콤포넌트 이용 클래스

String객체의 특징

  1. 한번생성된 객체는 불변이다.("안녕" ->(X) "안녕하세요")

  2. 클래스를 객체화할때 new를 사용하지만 String은 사용하지 않아도 된다.(String name = "홍길동";)

  3. 메모리상에서 같은 문자열은 공유합니다. String name = "홍길동"; String str = "홍길동"; name hashcode와 str hashcode는 같습니다.

  4. 문자열을 변경할때 ("안녕" -> "안녕하세요") 메모리상에는 "안녕"이라는 객체와 "안녕하세요"라는객체가 둘다 존재합니다.변경되어지는 객체가 있을때마다 새로운 객체가 만들어집니다.

  5. String 객체의 데이터 전달 유형

StringTest.java

Last updated