java 函数传引用参数的理解
来源:互联网 发布:ug nx11编程新功能 编辑:程序博客网 时间:2024/06/01 07:55
// 记住:不管引用怎么变,只要不调用该引用的方法,该引用所指的对象的任何属性都不会变。
public class Book{private String name;public Book(String str){name=str;}public Book(){}public Book(Book b1){name=b1.getName();} public String getName(){return name;}public void setName(String str){name=str;}public static void swap1(Book b1, Book b2) { Book tmp=new Book(); tmp=b1; b1.setName(b2.getName()); b2.setName(tmp.getName()); } public static void swap2(Book b1, Book b2) { Book tmp=new Book(b1); //tmp=b1; b1.setName(b2.getName()); b2.setName(tmp.getName()); }public static void main(String[] args){ //swap Book b1=new Book("b1"); Book b2=new Book("b2"); //swap(b1,b2); swap2(b1,b2); System.out.println(b1.getName()); System.out.println(b2.getName()); System.out.println("Swap complished!"); swap1(b1,b2); System.out.println(b1.getName()); System.out.println(b2.getName()); }}
程序执行的结果:
b2
b1
Swap complished!
b1
b1
在利用swap2函数时,我们完成了交换,为什么使用swap1没有完成交换那。
对于swap1()
public static void swap(Book b1, Book b2)
{ //因为参数是对象,所以传递时传递的是引用:引时b1,b2的引用地址和主main()函数中的是一样的。
Book tmp=new Book(); // 此时我们的tmp是别外一个对象,有自己的引用地址。
tmp=b1; // 此时,tmp引用的值变成了b1引用的地址。所以在下面执行中,对tmp的改变和对b1的改变是一样 的。因为两者指向对像是同一个地址。
b1.setName(b2.getName());
b2.setName(tmp.getName()); //此时tmp和b1是一致的,所以我们完不成交换。即我们的创建的临时变量并没有起到作用。
所以,要想创建的临时变量起作用,那么我在创建临时变量时就把要交换的数据给初始化上去。所以利用swap2()就可以完成了。
}
0 0
- java 函数传引用参数的理解
- JAVA中函数调用参数传递的理解(值传递和引用传递的理解)
- Java:理解Java中函数参数传递的【按值传递】和【按引用传递】
- Java函数参数的“传值”与“传引用”
- 对于拷贝构造函数中参数是引用的理解
- 函数传参数的理解
- 对比C++理解Java函数传参数的方式
- 对引用参数&的理解
- 关于js 函数传递引用参数理解
- java引用的理解
- java引用的理解
- 关于Java的引用和函数参数传递
- Java函数参数的值传递和引用传递
- 函数参数的引用问题&
- Java引用类型参数的传值
- Java 函数的参数引用,通过传入参数带回函数运行结果
- 如何理解函数形参为指针和引用类型的参数传递
- java中main函数的参数String[] args 的理解
- Android getwidth()和getheight()已经过时使用point
- Message Decowding
- Button的使用(十):ImageButton
- 关于hibernate中对象的三种状态分析
- AWGN Channel
- java 函数传引用参数的理解
- ngnix hash的两个关键 : 预计算hash的元素个数 和 通配符存在时的建表
- Unit6--problem3--二类共享
- [转载]MAC OS X 安装完mysql后终端不识别mysql命令的解决办法
- IdeaCMS开源企业网站系统 v6.1.5(带数据)
- Hibernate乐观锁实现之Version
- wchar和char的转换
- Linux下高并发socket最大连接数所受的各种限制
- MATLAB的plot函数颜色和线型设定参数