参数传递

public class test {

public static void main(String[] args)
{

Data d1=new Data(1);
Data d2=new Data(2);

swap1(d1,d2);                              //1
System.out.println("d1:"+d1.getValue());   //d1=2
System.out.println("d2:"+d2.getValue());   //d2=1

 

Data d7=new Data(7);
Data d8=new Data(8);

swap2(d7,d8);                              //2
System.out.println("d7:"+d7.getValue());    //d7=7
System.out.println("d8:"+d8.getValue());     //d8=8

change1();                                //d3=4
change2();                                //d3=3

}

public static void swap1(Data a,Data b)
{
int tmp=a.getValue();
a.setValue(b.getValue());
b.setValue(tmp);

System.out.println("a:"+a.getValue());    //a=2
System.out.println("b:"+b.getValue());    //b=1

}

public static void swap2(Data a,Data b){
 Data temp=a;
    a=b;
    b=temp;

System.out.println("a:"+a.getValue());      //a=8
System.out.println("b:"+b.getValue());      //b=7

}

public static void change1(){
Data d3=new Data(3); 
Data d4=d3;
d4.setValue(4);
System.out.println("d3:"+d3.getValue());
 
}

public static void change2(){
Data d3=new Data(3);
Data d4=d3;
d4=new Data(4);
System.out.println("d3:"+d3.getValue());
}
}

 


class Data {
private int value;

public Data(int a)
{
value=a;
}
public int getValue()
{
return value;
}
public void setValue(int a)
{
value=a;
}
}

 

change1()中d3 d4指向同一个对象 ,d4通过set方法改变对象 影响到d3;

change2()中 d3 d4指向同一个对象, d4使用new 时系统重新为d3分配一个空间创建对象 不影响到d3;

swap1()中和c语言中指针传递类似 改变指针所指向的内容 达到效果

swap2()中仅仅交换两个引用 没有影响

阅读更多
文章标签: class string 语言 c
上一篇全面接触Java集合框架[转]
下一篇Java的IO系统(文摘)---JAVA之精髓IO流
想对作者说点什么? 我来说一句

Java的引用和函数参数传递

2018年03月17日 17KB 下载

两个网页之间参数传递例子

2010年11月14日 597B 下载

Cognos 前端与服务器参数传递

2008年11月03日 8KB 下载

数据结构函数的参数传递

2011年05月04日 89KB 下载

FLASH与PHP交互参数传递

2009年10月13日 2KB 下载

uBoot和Linux的参数

2009年02月27日 38KB 下载

没有更多推荐了,返回首页

关闭
关闭