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