Java
Java call by value
승모근뭉치
2023. 1. 26. 13:15
1. 값만 전달
2. 주소(reference)를 전달
===================
프로젝트 내 src 내 javabasic 패키지 내 Shop.java
package javabasic;
//상품명, 수량, 단가 멤버 변수
public class Shop {
private String sang;
private int su;
private int dan;
// setter method
public void setSang(String sang) {
this.sang = sang;
}
public void setSu(int su) {
this.su = su;
}
public void setDan(int dan) {
this.dan = dan;
}
// getter method
public String getSang() {
return this.sang;
}
public int getSu() {
return this.su;
}
public int getDan() {
return this.dan;
}
// 수량*단가
public int getTotal() {
return su * dan;
}
}
프로젝트 내 src 내 javabasic 패키지 내 Ex9CallBy.java
package javabasic;
public class Ex9CallBy {
public static void changeInt(int n)// call by value
{
System.out.println("전달받은 n값:" + n);
n = 200;
}
public static void changeString(String str)// call by value
{
System.out.println("전달받은 s값:" + str);
str = "java";
}
public static void changeArray(int[] arr)// call by reference(모든 배열은 주소가 전달)
{
arr[1] = 7;
}
public static void changeShop(Shop shop)// call by reference
{
System.out.println(shop.getSang() + "\t" + shop.getSu() + "\t" + shop.getDan());
System.out.println("shop 정보 변경");
shop.setSang("딸기");
shop.setDan(3300);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 100;
changeInt(n);// int 기본형은 값만 전달
System.out.println("n=" + n);
String s = "happy";
changeString(s);
System.out.println("s=" + s);
int[] arr = { 3, 5, 1, 2 };
changeArray(arr);// 주소(reference) 가 전달됨
for (int a : arr)
System.out.println(a);
Shop shop = new Shop();
shop.setSang("오랜지");
shop.setSu(2);
shop.setDan(1500);
changeShop(shop);
System.out.println(shop.getSang() + "\t" + shop.getSu() + "\t" + shop.getDan());
}
}
전달받은 n값:100
n=100
전달받은 s값:happy
s=happy
3
7
1
2
오랜지 2 1500
shop 정보 변경
딸기 2 3300