值传递

java中,方法中所有的参数的都是“值传递”,就是传递的是原来值的副本,不是原来的参数,因此,改变不会影响到原来的参数。

基本数据类型参数的传值

传递的都是副本,改变以后不会影响到原来的参数。

引用类型参数的传递

传递的是值的副本,但是引用类型指本来就代表一个“对象的地址”。因此,副本和原参数都指向的是同一个地址,改变副本的值,也就会改变原来参数的值了。

例:

public class User {   
int id;   
String name;    //构造方法
public User(int id, String name) {
this.id = id;       
this.name = name;   
}    //这个地方传递的是对象的地址   
public void test1(User u){
u.name = "李四";   
}    //这个地方传递的也是对象的地址   
public void test2(User u){       
//因为这个地方只是又创建一个新的对象       
//调用构造方法,会返回一个地址       
//所以这里创建完对象以后,u就是一个新的对象了,跟原来的没有关系了。       
u = new User(2, "王五");   
}   
public static void main(String[] args) {       
User user = new User(1, "张三");       
System.out.println("原来的值:" + user.name);    user.test1(user);       
System.out.println("第一改变后的值:" + user.name);       
//为什么第二次改变了,但是输出的值没有改变       
user.test2(user);       
System.out.println("第二改变后的值:" + user.name);       
/*输出的结果:           
原来的值:张三           
第一改变后的值:李四           
第二改变后的值:李四        
*/   
}
}

细节决定成败!

个人愚见,如有不对,恳请扶正!

最新文章

  1. iOS:基于CoreText的排版引擎
  2. cellmap for iphone
  3. OGRE1.8.1源码编译(VS2008)
  4. SpringMVC类型转换、数据绑定
  5. wmic 获得系统硬件信息
  6. iOS 读书笔记-国际化
  7. Linuxc - 多c文件程序编译执行
  8. python读写excel文件
  9. Tomcat 在 Linux 上的安装和配置
  10. workerman Channel组件全局广播
  11. 关于冒泡排序的Java代码实现
  12. sonar runner的配置
  13. EJB与JavaBean
  14. i2c 异常之i2c1 prob 检测超时
  15. leetcode704
  16. bzoj2676 Contra
  17. C#的split()分割字符串
  18. 学习Tomcat动态加载JSP的Class类
  19. 在Unity3d中解析Lua脚本的方法
  20. 004-画图神器-graphviz

热门文章

  1. JMicro微服务之超时&重试
  2. Pandas之:Pandas高级教程以铁达尼号真实数据为例
  3. libevent中数据缓冲区buffer分析
  4. HDR sensor 原理介绍
  5. 如何在TVM上集成Codegen(下)
  6. 如何使用Nsight Compute?
  7. Mask R-CNN用于目标检测和分割代码实现
  8. CSS 常见问题笔记
  9. 手写Spring Config,最终一战,来瞅瞅撒!
  10. Java-IO流的继承结构