Java按值传递和按引用传递

如果传递参数是基本类型或其包装类,则按值传递,改变参数的值,实际参数的值不变。

	public static void main(String[] args) {
		Integer i = 1;
		System.out.println(i); //1
		changeI(i);
		System.out.println(i); //1,i的值没有改变
	}
	public static void changeI(Integer i){
		i =2 ;
	}

如果传递参数是类或数组,则按引用传递,改变对象的引用,实参的引用不会改变,但是如果改变的是对象或数组中的值,则实参对象或数组中的值也会跟着改变。

public class SwapTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		C c1 = new C();
		c1.setId(1);
		System.out.println(c1.id); //1
		changeId(c1);
		System.out.println(c1.id); //2,实参的id改变了
	}
	public static void changeId(C c1){
		c1.id = 2;
	}
}
class C{
	Integer id;
	public C(){
		
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
}
如果两数交换,则必须使用数组操作数组中的两个值才能实现,交换两个对象也必须存放到数组中进行交换。

发布了30 篇原创文章 · 获赞 5 · 访问量 20万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章