Java参数传值还是传引用

15 篇文章 0 订阅

Java参数传值还是传引用,废话不说,简单一个例子理清。

1.对象就是传引用 
2.原始类型就是传值
3.String类型因为没有提供自身修改的函数(final),每次操作都是新生成一个String

/**
 *@ProjectName:
 *@version 1.0.0  2011-10-13
 *@author:<a href="mailto:lovekang89@163.com">freewind</a>
 */
package com.junit.test;

/**
 * @Description: 1.对象就是传引用 2.原始类型就是传值 3.String类型因为没有提供自身修改的函数(final),每次操作都是新生成一个String
 */
public class Test {
	class Point {
		public Point(int a, int b) {
			this.x = a;
			this.y = b;
		}

		int x;
		int y;
	}

	public void tricky(Point a) {
		a.x = 456;
		a.y = 963;
	}

	public void tricky(Point arg1, Point arg2) {
		arg1.x = 100;
		arg1.y = 100;
		Point temp = arg1;
		arg1 = arg2;
		arg2 = temp;
	}

	public void chang(int a)
	{
		a = 200000;
	}
	
	public void chang(boolean b)
	{
		b = false;
	}
	
	// public static void main(String [] args)
	@org.junit.Test
	public void te() {
		Test t = new Test();
		Point pnt1 = new Point(0, 0);
		Point pnt2 = new Point(0, 0);
		System.out.println("X: " + pnt1.x + " Y: " + pnt1.y);
		System.out.println("X: " + pnt2.x + " Y: " + pnt2.y);
		System.out.println(" ");
		t.tricky(pnt1, pnt2);
		System.out.println("pnt1 X: " + pnt1.x + " Y:" + pnt1.y);
		System.out.println("pnt2 X: " + pnt2.x + " Y: " + pnt2.y);
		t.tricky(pnt1);
		System.out.println("pnt1 X: " + pnt1.x + " Y:" + pnt1.y);

		int aa = 121;
		boolean bb = true;
		t.chang(bb);
		t.chang(aa);
		System.out.println(aa +"  " + bb);
	}

}


输出:

X: 0 Y: 0
X: 0 Y: 0
 
pnt1 X: 100 Y:100
pnt2 X: 0 Y: 0
pnt1 X: 456 Y:963
121  true


参考: http://blog.csdn.net/fbysss/article/details/3082949

Java参数传值还是传引用,废话不说,简单一个例子理清。感谢 fbysss的总结。

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值