java中有关参数传递的问题

        首先声明,本人是菜鸟,基础很一般,所以可能有不少地方理解的不到位甚至错误,如有不对地方,还请各位多多批评指出!

简单来说java中所有的参数传递的都是值,比如基本数据(int,double,char等)类型的传递是数值(将“实参”的值的复制传递给“形参”),所以在方法体中改变有关参数的值并不会改变“实参”的值。类似的如果“实参”传递的是对象,就将“实参”的值复制给“形参”,即此时实参和形参是两个不同的变量,但是它们此时引用的是同一个对象。因此如果想要改变“实参”的值,通过基本数据类型的数值传递在java中是不能实现的,只能通过传递对象来实现。具体可以见下面的例子。public public class Test_1{

	static void change(Test one,Test two){
		int c;
		c=one.a;
		one.a=two.a;
		two.a=c;
		
	/* 此法不可行,因为主函数中对象的引用无法改变,以下代码改变的只是change 函数
	      中的对象的引用,对主函数中对象的引用没有影响。
		Test c;
		c=one;
		one=two;
		two=c;
		            */
	}
	public static void main(String args[]){
		Test one=new Test(5);
		Test two=new Test(8);
		System.out.println("交换前one中a的值为:"+one.get()+",two中b的值为:"+two.get());
		change(one,two);
		System.out.println("交换后one中a的值为:"+one.get()+",two中b的值为:"+two.get());
	}
}
class Test{
	int a;
	Test(int a){
		this.a=a;
	}
	public int get(){
		return a;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值