日期:2014-05-20  浏览次数:20667 次

我的程序是不是涉及了传值或者引用?
这是我的程序!当中的money属于传值还是引用的呢?又是如何区分出属于传值还是引用的呢?

public class Bank implements Runnable {
int money=200;
public void setMoney(int n){
money=n;
}

@Override
public void run() {
// TODO Auto-generated method stub
if(Thread .currentThread().getName().equals("会计"))
saveOrTake(300);
else if(Thread.currentThread().getName().equals("出纳"))
saveOrTake(150);

}


  //承接上面的方法 saveOrTake()
private void saveOrTake(int amount) {
if(Thread.currentThread().getName().equals("会计")){
for(int i=1;i<=3;i++){
money=money+amount/3;
System.out.println(Thread.currentThread().getName()+"加入"+amount/3+",账上有"+money+"万,休息一会再取");
try{
Thread.sleep(1000);
}
catch(InterruptedException e){ }
 
}
}
 
 
else if(Thread.currentThread().getName().equals("出纳")){
for(int i=1;i<=3;i++){
money=money-amount/3;
System.out.println(Thread.currentThread().getName()+"取出"+amount/3+",账上有"+money+"万,休息一会再取");
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
}
}

}




}


------解决方案--------------------
看这里的代码money是引用。因为money是全局变量,并不是传递到哪个方法里,都是方法里直接使用的全局money。区分个人感觉很简单,传递的就是传值,直接使用的就是引用喽!
Java code

private String a = "";
public void setAaa(String a) {
  this.a = a;//this.a就是引用,而a就是传值。因为这个方法传递了一个跟全局变量a一样的变量,所以为了区分必须写this.a,否则认为是传递的a变量
}

public String getAaa(){
  return a;//这里只有一个a,那么可以省略this.直接使用便可!
}