- 关 键 词:
- java
上java课的时候,老师讲java所有的参数都是pass by value,以前感觉很困惑,一直感觉对象是通过引用传递的。今天测试了一些才发现其中的奥秘。 java中如何交换两个值?对于基本类型: view plaincopy to clipboardprint?
int temp=args[0];
args[0]=args[1];
args[1]=temp;
}
public static void swap(int args[]){
int temp=args[0];
args[0]=args[1];
args[1]=temp;
}对于引用类型,一般也需要这种使用数组的方法。以前一直以为 swap(Object o1,Object o2)能够实现交换功能,测试过之后才知道这是自己一厢情愿的想法。在swap(Object o1,Object o2)中,o1和o2只是调用时外部对象引用值的拷贝,内部对它们的修改不会改变外部的实际值。但是如果调用了引用所指向的对象的方法的话,那确确实实是会执行的。做下面的测试验证一下: view plaincopy to clipboardprint?
public class Test{
public static void modify(StringBuffer buffer){
buffer.append("world");
buffer=new StringBuffer("no effect!");
}
public static void main(String args[]){
StringBuffer stringBuffer=new StringBuffer("hello ");
System.out.println(stringBuffer);
modify(stringBuffer);
System.out.println(stringBuffer);
}
}
相关专题
- Java环境安装配置 (6022篇文章)
- Java编程开发手册 (8725篇文章)
- Java的类 (952篇文章)
- Java基础开发篇 (647篇文章)
- Java远程通讯的6种可选技术及原理 (279次浏览)
- struts2 + spring + hibernate 实现CRUD (217次浏览)
- Spring 与 Log4J 进行动态日志配置切换 (182次浏览)
- 初学者对Hibernate的学习方法 (168次浏览)
- Hibernate的映射关联关系 (154次浏览)
- MyEclipse搞定hibernate的web应用 (104次浏览)
- 多动鼠标少动脑,Java报表工具的简约之美 (92次浏览)
- 多种计时器的比较与分析 (90次浏览)
- 没有父类的Java Class是如何从Object继承的 (88次浏览)
- JAVA Calendar方法详解 (87次浏览)



