没有合适的资源?快使用搜索试试~ 我知道了~
java传参问题,通过对原始类型的传参和对应用类型的传参分析java的传值问题
资源推荐
资源详情
资源评论
一,传的是原始数据类型时
int a = 4;
public void sendParam(int b){
b = 5;
}
sendParam(a);
System.out.print(a);
此时传的是a的副本,传的是值,不是引用,所以a的值是不会修改的
所以此时a的值还是为4.
例子参见C:\Documents and Settings\Administrator\桌面\TestJava\传值问题\Test1
二.传的是对象时
User user = new User();
user.setName("罗超");
public void sendObject(User user1){
user1 = new User();
user1.setName("不是罗超");
}
sendObject(user);
System.out.println(user.getName());
当执行 User user = new User();时在内存中开了一块空间user指向这块空间,当执行use.setName("罗超");时在这块空间中放了一个字符串"罗超",接着把user作为参数传给sendObject(),此时传的是对象的副本,user1指向的是"罗超",这句代码 use1 = new User();此时copy了一个user1的副本,这个副本是个匿名对象,指向的是"罗超",当完成user1.setName时,匿名对象把地址赋给了user1,此时,user1指向了"不是罗超",但是user中的指向,始终没有发生改变。
参见 C:\Documents and Settings\Administrator\桌面\TestJava\传值问题\test2
三
User user = new User();
int a = 4;
public void sendParam(int b){
b = 5;
}
sendParam(a);
System.out.print(a);
此时传的是a的副本,传的是值,不是引用,所以a的值是不会修改的
所以此时a的值还是为4.
例子参见C:\Documents and Settings\Administrator\桌面\TestJava\传值问题\Test1
二.传的是对象时
User user = new User();
user.setName("罗超");
public void sendObject(User user1){
user1 = new User();
user1.setName("不是罗超");
}
sendObject(user);
System.out.println(user.getName());
当执行 User user = new User();时在内存中开了一块空间user指向这块空间,当执行use.setName("罗超");时在这块空间中放了一个字符串"罗超",接着把user作为参数传给sendObject(),此时传的是对象的副本,user1指向的是"罗超",这句代码 use1 = new User();此时copy了一个user1的副本,这个副本是个匿名对象,指向的是"罗超",当完成user1.setName时,匿名对象把地址赋给了user1,此时,user1指向了"不是罗超",但是user中的指向,始终没有发生改变。
参见 C:\Documents and Settings\Administrator\桌面\TestJava\传值问题\test2
三
User user = new User();
资源评论
luochao5700
- 粉丝: 6
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功