文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>java中的传值与传引用

java中的传值与传引用

时间:2010-10-06  来源:lxy_em30

 java中的传值和传引用的说法其实只是仿照了C/C++的说法,事实上,java中传的都是值,如下例:

public class Test {

public static void main(String[] args) { 

Test t = new Test();

A a1 = new A(3); 

change(a1); 

System.out.println(a1.getId()); 

int a= 45;

change(a);

System.out.println(a);

}

static class A {

int id;

public A(int id) {

this.id = id;

}

public void setId(int id) {

this.id = id;

}

public int getId() {

return this.id;

}

}

public static void change(A a){

a = new A(5);

System.out.println("a: " + a); 

}

public static void change(int a){

a = 5;

}

}

此程序的输出结果是:3和45;

很显然,第一次调用的change(a1)时,传入的并非是a1本身,而只是a1所指向的地址的值,而在函数里面的a = new A(5);并没有改变a1本身所指向的地址值,所以,最后还是输出了3;第二次调用chenge(a)时,就更容易理解了,此时传入的就是5这个值,并不是a本身,从而a的值最终都没有变化,当然输出45。

由上可以很简单的认为,java中没有所谓的传引用一说,说到底都是传值,区别在于:

1、当传入的是对象时,所谓的“值”变成了该对象在堆上的“地址值”,如传入对象a1,则此值是:a1的地址值;

2、当传入的是原生变量如:int,long等变量时,则所谓的“值”是该变量的“内容”,如:a=5,就是传入的5。

 

 

 

相关阅读 更多 +
排行榜 更多 +
泡龙大闯关安卓版

泡龙大闯关安卓版

冒险解谜 下载
割草派对安卓版

割草派对安卓版

飞行射击 下载
堡垒攻防战安卓版

堡垒攻防战安卓版

飞行射击 下载