我的程序是不是涉及了传值或者引用?
这是我的程序!当中的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.直接使用便可!
}