一道面试题

neary 2006-07-11 07:01:54

public class Start {

/**
* @param args
*/
public static void main(String[] args) {
Bean bean1 = new Bean("001");
Bean bean2 = new Bean("002");

Start start = new Start();
//Begin
start.exchange(bean1,bean2);
System.out.println(bean1.getId());
System.out.println(bean2.getId());
//End
}

private void exchange(Bean b1,Bean b2) {
Bean bean = b1;
b1 = b2;
b2 = bean;
}

}

class Bean {

private String strId = "";

public Bean() {
//
}
public Bean(String pstrId) {
strId = pstrId;
}

public void setId(String pstrId) {
strId = pstrId;
}

public String getId() {
return strId;
}
}
...全文
668 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
ariesying 2006-07-16
  • 打赏
  • 举报
回复
lz弄明白java中参数传递的机制就没问题了
liujun007 2006-07-16
  • 打赏
  • 举报
回复
怎么无法编译出错
java.lang.Error: Unresolved compilation problems:
bean1.bean2 cannot be resolved or is not a field
Syntax error on token "Invalid Character", . expected

at Start.main(Start.java:14)
Exception in thread "main"
start.exchange(bean1,bean2);这句错
chenmingjsw 2006-07-16
  • 打赏
  • 举报
回复
...
sos110 2006-07-16
  • 打赏
  • 举报
回复
我们用java来解决实际问题。java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员以及渴望学习java技术的初学者加入讨论。QQ群:3001581
smalllixin 2006-07-15
  • 打赏
  • 举报
回复
我觉得这道题是考考你懂不懂C/C++ ,个人看着没啥感觉
zyq_10_25 2006-07-15
  • 打赏
  • 举报
回复
001
002

上面的讨论真不错!


wangqi19820913 2006-07-15
  • 打赏
  • 举报
回复
1)对象的内容是传址传递,所以改变了对象指向的内容的话比如在exchange中b1.setId('002'),那么这个值就被改掉了
2)对象的引用是传值传递,对于对象的引用的赋值只是在操作拷贝,并不影响原来那个引用,所以在exchange中b1=b2,只是操作b1的拷贝,所以答案是001,002
yoyo82 2006-07-14
  • 打赏
  • 举报
回复
又是局部变量,作用域问题!

同意kingdoom()
sunshine5246 2006-07-14
  • 打赏
  • 举报
回复
顶,传值而非传引用
csxheart 2006-07-14
  • 打赏
  • 举报
回复
就是所谓的pass by vlaue的问题,函数调用时在栈里分配了两个b1,b2的空间,存放引用指向Bean类的两个对象,之后函数做的是栈里b1,b2的交换,也就是说b1,b2指向的改变,再然后出函数,b1,b2当然就不存在了(被pop了),在这里面在堆中的Bean对象没有作任何的变化.

这和C的值传递有类似的地方,我觉得理解的方法就是掌握java对变量的存储的方式.自己也在学习中,大家一起加油^_^
  • 打赏
  • 举报
回复
作用域不一样啊
wtobias 2006-07-14
  • 打赏
  • 举报
回复
学习
kampfer 2006-07-14
  • 打赏
  • 举报
回复
什么域啊,堆啊,都是瞎扯!

参数传的引用的copy,换句话说修改的复件,原值没有变化,

如果。。只是如果java参数传的是原值,结果就是:
002
001
xiemingmei 2006-07-14
  • 打赏
  • 举报
回复
3)一个方法不能让对象参数引用一个新的对象

这句话什么意思啊, 不懂/
xiemingmei 2006-07-14
  • 打赏
  • 举报
回复
这里是传引用的阿,

main:
exchange(bean1,bean2)

exchang:
相当于:Bean b1 = main.bean1;
Bean b2 = main.bean2;

b1、b2交换,当然不干main.bean1、main.bean2的事了,他们俩指向的对象没有变化/










qiuqiang1985 2006-07-14
  • 打赏
  • 举报
回复
001
002
说明:
在java中方法参数有两种类型:
1)基本数据类型(数字)
2)对象引用
一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。
java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递。
注意:”对象引用“与“引用调用”是不同的。
总结:
1)一个方法不能修改一个基本数据类型的参数
2)一个方法可以改变一个对象参数的状态
3)一个方法不能让对象参数引用一个新的对象
terry_yip 2006-07-12
  • 打赏
  • 举报
回复
这个问题,答案上,我还是会认同001,002, 但是,原理上我和大家的想法有所不同,我觉得关键是在这一句:

Start start = new Start();

这一句,使到内存中重新开劈一段空间来运行main(),从而又
Bean bean1 = new Bean("001");
Bean bean2 = new Bean("002");
//这是第二次初始化,

就是说, main执行了两次,bean1,bean2分别都有两个,然后exchange函数,使新的bean1,bean2的指针交换了指向,但是,最后输出的值,还是旧的bean1,bean2,所以是001,002

wuzhu888 2006-07-12
  • 打赏
  • 举报
回复
运行结果为001,002
NikeUser 2006-07-12
  • 打赏
  • 举报
回复
确实不错。上面的已经讲的很详细了
healer_kx 2006-07-12
  • 打赏
  • 举报
回复
对,传值,非传引用,这个和C#,C++都是一样的。
加载更多回复(12)
昨日,11.19,最新整理了,第61-80题,现在公布上传。 另加上之前公布的第1-60 题,在此做一次汇总上传,以飨各位。 可以这么说,绝大部分的面试题,都是这100 道题系列的翻版, 此微软等公司数据结构+算法面试100 题系列,是极具代表性的经典面试题。 而,对你更重要的是,我自个还提供了答案下载,提供思路,呵。 所以,这份资料+答案,在网上是独一无二的。 ------------------------------------ 整理资源,下载地址: 答案系列: 1.[最新答案V0.3 版]微软等数据结构+算法面试100 题[第21-40 题答案] http://download.csdn.net/source/2832862 2.[答案V0.2 版]精选微软数据结构+算法面试100 题[前20 题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1 版本,进行的校正与修正。 3.[答案V0.1 版]精选微软数据结构+算法面试100 题[前25 题] http://download.csdn.net/source/2796735 题目系列: 4.[第一部分]精选微软等公司数据结构+算法经典面试100 题[1-40 题] http://download.csdn.net/source/2778852 5.[第1 题-60 题汇总]微软等数据结构+算法面试100 题 http://download.csdn.net/source/2826690 更多资源,下载地址: http://v_july_v.download.csdn.net/ 若你对以上任何题目或任何答案,有任何问题,欢迎联系我: My E-mail: zhoulei0907@yahoo.cn ------------- 作者声明: 本人July 对以上公布的所有任何题目或资源享有版权。转载以上公布的任何一题, 或上传百度文库资源,请注明出处,及作者我本人。 向你的厚道致敬。谢谢。 ---July、2010 年11 月20 日。 ------------------------------------------------------ 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
此为我个人搜集整理的, 精选微软等公司,有关 数据结构和算法的面试100题[前40题], 此绝对值得你下载收藏。 网友yui评论,真是够多的了,从此,不用再看其它面试题.... 一句话,请享用。 其它资源,下载地址: 1.[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案] http://download.csdn.net/source/2832862 2.[第1题-60题汇总]微软等数据结构+算法面试100题 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试100题[前20题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试100题[前25题] http://download.csdn.net/source/2796735 5.[第二部分]精选微软等公司结构+算法面试100题[前41-60题]: http://download.csdn.net/source/2811703 6.[第一部分]精选微软等公司数据结构+算法经典面试100题[1-40题] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ //请继续期待,后续内容。 ------------------------------------------------------ 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html -------July、2010年12月2日。
精选微软等数据结构+算法面试100题答案修正V0.2版本 -------------------- 此份答案是针对,前期已公布的最初的那份答案的,初步校正与修正。 http://download.csdn.net/source/2796735(V0.1版) 相比第一份V0.1版答案,此份答案V0.2版更加准确,亦修正了不少题目的答案。 此份20题的答案,思路更加清晰易懂,简介明了。 请享用。July、2010/11/06。 其它资源,下载地址: 1.[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案] http://download.csdn.net/source/2832862 2.[第1题-60题汇总]微软等数据结构+算法面试100题 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试100题[前20题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试100题[前25题] http://download.csdn.net/source/2796735 5.[第二部分]精选微软等公司结构+算法面试100题[前41-60题]: http://download.csdn.net/source/2811703 6.[第一部分]精选微软等公司数据结构+算法经典面试100题[1-40题] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ ------------------------------------------------------ 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
火爆出炉:微软等数据结构+算法面试100题首次完整亮相 ---100题V0.1版最终完成 作者:July 2010年12月6日 微软等100题系列V0.1版终于结束了。 从2010年10月11日当天最初发表前40题以来,直至此刻,整理这100题,已有近2个月。 2个月,因为要整理这100题,很多很多其它的事都被我强迫性的搁置一旁, 如今,要好好专心去做因这100题而被耽误的、其它的事了。 这微软等数据结构+算法面试100题系列(题目+答案),到底现在、或此刻、或未来, 对初学者有多大的意义,在此,我就不给予评说了。 由他们自己来认定。所谓,公道自在人心,我相信这句话。 任何人,对以下任何资料、题目、或答案,有任何问题,欢迎联系我。 作者邮箱: zhoulei0907@yahoo.cn 作者声明: 转载或引用以下任何资料、或题目,请注明作者本人July及出处。 向您的厚道致敬,谢谢。 好了,请享受这完完整整的100题吧,这可是首次完整亮相哦。:D。 ............ ............ 答案系列: 5.[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案] http://download.csdn.net/source/2832862 6.[答案V0.2版]精选微软数据结构+算法面试100题[前20题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 7.[答案V0.1版]精选微软数据结构+算法面试100题[前25题] http://download.csdn.net/source/2796735 剩下的第41-100题答案,正在整理中。预计明年整理公布。 请各位,细心的等待。谢谢。 更多资源,下载地址: http://v_july_v.download.csdn.net/ ================================== 更多详情,请参见本人博客: My Blog: http://blog.csdn.net/v_JULY_v --------------------------------------------------------------------------------------- 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧