您的位置:首页 > 编程语言 > Java开发

Java 中值传递与引用传递的区别

2018-03-11 22:18 435 查看

由于Java取消了指针的概念,因此开发人员在编程中往往忽略了对象和引用的区别,如实例1

package xupt.edu.java.com;

public class TestRef
{
public Obj aObj = new Obj();
private int aInt = 0;

public Obj getAObj()
{
return aObj;
}

public int getAInt()
{
return aInt;
}

public void changeObj(Obj inObj)
{
inObj.setStr("changed value");
}

public void changeInt(int inInt)
{
inInt = 1;
}

public static void main(String[] args)
{
TestRef oRef = new TestRef();
System.out.println("*********引用类型*********");
System.out.println("调用changeObj()前:" + oRef.getAObj());
oRef.changeObj(oRef.getAObj());
System.out.println("调用changeObj()后:" + oRef.getAObj());
System.out.println("*********基本数据类型*********");
System.out.println("调用changeInt()前:" + oRef.getAInt());
oRef.changeInt(oRef.getAInt());
System.out.println("调用changeInt()后:" + oRef.getAInt());
}
}

class Obj
{
public void setStr(String str)
{
this.str = str;
}

private String str = "default value";

public String toString()
{
return str;
}
}
上面两个看似类似的方法却有着不同的运行结果,主要原因是Java在处理基本数据类型(例如int ,char ,double 等)时,都是采用按值传递(传递的是输入参数的复制)的方式执行,除此之外的其他类型都是按引用传递(传递的是对象的一个引用)扽方式执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: