Java 将参数传递给方法,参数是否会被改变?

Java 中方法的传参没有所谓的值传递和引用传递,值传递和引用传递已经是历史,Java中只有值传递,参数传递的是参数的拷贝,这个拷贝在基本数据类型就是数值,对象类型就是引用!

值类型:基本数据类型
引用类型:除基本数据类型之外的类型
1.值传递:适用于基本数据类型和不可变类(String,基本类型包装类型是引用类型,但是遵循值传递规则),传递的是数据的拷贝,被调用对象对新数据的改变不影响原数据的取值

2.引用数据类型:传递的是引用地址的拷贝,被调用对象对新数据的改变影响原数据的取值,因为新数据和原数据的引用虽然不同但却指向堆中的同一数据对象。

package com.wugeek.test;
/**
* @author 作者 :peanut.w
* @version 创建时间:2017年12月9日 下午4:13:17
* 类说明
*/
public class TestPass {
	int a=123;//基本数据类型int
	String b="123";//特殊的类string
	StringBuffer c=new StringBuffer("123");//引用数据类型
	public void method(){
		this.changeInt(a);
		System.out.println(a);
		this.changeString(b);
		System.out.println(b);
		this.changeStringBuffer(c);
		System.out.println(c);
		
	}
	public void changeInt(int x){
		x=1234;
	}
	public void changeString(String y){
		y="1235";
		
	}
	public void changeStringBuffer(StringBuffer stringBuffer){
		stringBuffer.append(456);
		
	}
	public static void main(String [] args){
		TestPass test =new TestPass();
		test.method();
	}
	//输出结果:123   123   123456

}

猜你喜欢

转载自blog.csdn.net/peanutwzk/article/details/78760035