一道SCJP题目
来源:互联网 发布:大数据的三个哲学问题 编辑:程序博客网 时间:2024/06/05 12:07
今天在看SCJP题库时看到一道题,我百思不得其解,题目是这样的:
public class Item { private String desc; public String getDescription() { return desc; } public void setDescription(String d) { this.desc = d; } public static void modifyDesc(Item item, String desc) { item = new Item(); item.setDescription(desc); } public static void main(String[] args) { Item it = new Item(); it.setDescription("GobStopper"); Item it2 = new Item(); it2.setDescription("Fizzylifting"); modifyDesc(it, "Scrumdiddlyumptious"); System.out.println(it.getDescription()); System.out.println(it2.getDescription()); }}输出结果是:
GobStopperFizzylifting
我的理解是java中有值传递和址传递,java中基本数据类型是值传递,对象是址传递,所以上面的传进去的是一个地址,然后在方法中把这个地址的指向给变了,并且修改了值,所以it变量的值也跟着变了。所以输出应该是
ScrumdiddlyumptiousFizzylifting其实则不然。
我又改了一下代码,改成如下:
public class Item { private String desc; public String getDescription() { return desc; } public void setDescription(String d) { this.desc = d; } public static void modifyDesc(Item item, String desc) { item.setDescription(desc); } public static void main(String[] args) { Item it = new Item(); it.setDescription("GobStopper"); Item it2 = new Item(); it2.setDescription("Fizzylifting"); modifyDesc(it, "Scrumdiddlyumptious"); System.out.println(it.getDescription()); System.out.println(it2.getDescription()); }}这一次的输出结果是
ScrumdiddlyumptiousFizzylifting
并且个人认为java中不存在所谓的“引用传递”和“址传递”。这只是一种说法罢了。其实“引用传递”和“址传递”传过去的仍然是一个值,是地址的一个副本罢了,所以严格说来java中只有值传递。
- 一道SCJP题目
- SCJP的一道选择题
- scjp题目解析(一)
- scjp题目解析(二)
- scjp题目解析(三)
- scjp题目解析(四)
- scjp题目解析(五)
- scjp题目解析(六)
- scjp题目解析(八)
- scjp题目解析(七)
- scjp题目解析(十)
- scjp题目解析(十一)
- scjp题目解析(十二)
- scjp题目解析(十三)
- scjp题目解析(十四)
- scjp题目解析(十五)
- 一道题目
- 一道题目
- mysql 存储过程详解
- 关于sizeof的一道面试题
- android 关于页面跳转
- 存储过程
- 解决 JavaMail Api 删除邮件时 诡异Exception
- 一道SCJP题目
- Exception
- 分享到豆瓣、百度空间、新浪微博的纯js代码
- Android一些备忘
- 集群:Corosync/openais+pacemaker 配置实现
- 启动代码之Option.inc
- hdoj 4022Bombing( STL )
- MYSQL 常用sql语句小结(转)
- sizeof() 的使用