参数传递,值传递弄得我一头雾水,大哥大姐们帮我讲讲吧。。
   public   class   PassByRef   { 
 	int   a;	 
 	public   void   method(PassByRef   p){ 
 		p   =   new   PassByRef(); 
 		p.a   =   10; 
 	} 
 	public   static   void   main(String[]   args)   { 
 		PassByRef   p   =   new   PassByRef(); 
 		p.a   =   5; 
 		p.method(p); 
 		System.out.println(p.a); 
 	} 
 }     
 public   class   PassByValue   { 
 	public   void   method(int   a){ 
 		a   =   10; 
 	} 
 	public   static   void   main(String[]   args)   { 
 		PassByValue   pbv   =   new   PassByValue(); 
 		int   a   =   5; 
 		pbv.method(a); 
 		System.out.println(a); 
 	} 
 } 
------解决方案--------------------和其它语言一样,java也有引用传递和值传递。java的引用和c/c++的指针是一个概念,就是取得某个变量的地址。所谓引用传递,就把先把引用变量复制一份,放在堆栈中,然后把复制的引用变量再作为实参供函数调用。而值传递就不一样,值传递不用复制,直接把变量的值作为实参供函数调用。
------解决方案--------------------一定要记往,JAVA所有的都是引用,所以在传递的时候一定要注意了 
 -------------------------- 
 p.a = 5; 
 p.method(p);//这只改变了方法体的一些内容,并没有返回方法外的值 
 System.out.println(p.a);//所以还是取到方法外面的值 
 -------------------------- 
 引用引用......
------解决方案--------------------你要理解内存的存储方式,内存分堆,栈,全局区(静态区),常量区.4个区域 
 堆,是用来存储引用类型和对象变量 
 栈,用来存储变量, 
 全局区(静态区),)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 
 常量区 — 常量字符串就是放在这里的.程序结束后由系统释放.   
 你再搞懂变量的生命周期,一般生命周期都是在{}内的,也就是他只在{}有效 
 比如{int x}和{int x}这两个X是不同的两个,在栈中创建2个不同的内存地址来存储 
------解决方案--------------------举个例子 
 int x = 0;这个变量,所以在栈中存储 
 String x = new String( " "); 
 首先,String x,要在栈中开个空间来存储X,类型是String 
 接着再堆中开个空间来存储new String( " "); 
 再通过 "= "把堆中的首地址传递给栈中的X,那么X存储的就是new String( " ");变量在堆中的首地址, 
 也几是说这时候X存储的是一个地址,而不是一个值,这个值是在堆中存储   
 讲那么多,应该懂了吧 
 记的给分呀
------解决方案--------------------java里面参数传递只有值传递
通常认为java有两种传递:引用传递和值传递
但其实只有一种值传递。
因为java参数传递的过程是将参数进行内容拷贝,然后使用拷贝后的数据,函数调用完之后,释放拷贝。
这正式值传递的过程。
引用传递只是将引用拷贝了一次,指向的对象实体仍没变