java方法参数中的基本数据类型传递和引用数据类型传递总结

先看例子

 

1.在方法中,基本数据类型的传递

package cn.zyy;

public class Test {

	public static void main(String[] args) {
		int i =1,j=2;
		change(i,j);
		System.out.println("i=" +i + ",j="+ j);
		/**结果为:i=1,j=2*/
	}
	
	public static void change(int i,int j){
		int temp = i;
		i = j;
		j = temp;		
	};

}

  总结:在方法中,如果参数传递的是基本数据类型的数据,则它传递的是值得副本,并不是值本身

 

2.在方法参数中,引用数据类型的传递

package cn.zyy;

public class Test {

	public static void main(String[] args) {
		int [] numbers = {1,2,3,4,5};
		change(numbers);
		System.out.println(numbers[0]); //结果为10
	}

	public static void change(int [] numbers){
		numbers[0] = 10;	
	}
	//可变参数类型其实也是一个数组(和上面的方法拥有同样的效果)	
	public static void change1(int... numbers){
		numbers[0] = 11;
	}

}

   总结: 如果方法中传递的是引用数据类型,则它传递的是引用(其实就是真正数据值所存放在内存中的地址值)的副本,也就是说,实质上如果修改的话,是对正真的值进行修改

 

3.基于以上进行改变

package cn.zyy;

public class Test {

	public static void main(String[] args) {
		T t = new T();
		System.out.println(t.i);  //输出的结果是1
	}

	public static void change(T t){	//此处传递的是上面对象引用的副本值
		t = new T();	//此处在创建新对象时,将之前引用的副本值修改,所以在修改的时候,并没有修改以前的 值
		t.i = 10;
	}
}

class T {
	public int i =1;
}

  总结: 如果传递的是引用类型的话,如果引用值被修改了,那么之前传进来的对象,将不会再被修改。

 

 

哈哈,虽然比较简单,但是在笔试中会问到,所以今天写了出来。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值