论坛首页 招聘求职论坛

一道郁闷的面试题

浏览 33122 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-23  

昨天去一家公司面试,面试了这样一道java题

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

我的答案是:值传递

但是,面试官说他是 引用传递

但是我在搜索google看到:

     46、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

对了,忘了,还有一道:

能不能有一个char类型的变量来存放一个中文字??

   发表时间:2007-05-23  
文字游戏
现在翻译得乱七八糟的  理解的也是乱七八糟的 如果直接用英文定义来说会好一些

反正我的理解是引用传递  看后面的说明  更是引用传递的 引用传给方法  方法改变引用的值 再把引用传回来 特别是里面还有这句“参数的值就是对该对象的引用”为什么还要叫他“值传递”呢  直接叫引用传递不就得了

要说明的是 基本类型和obj的传递是不同的

char能放中文
0 请登录后投票
   发表时间:2007-05-23  
char可以的说。。

此方法可改变这个对象的属性
怎么看也不是值传递。。。

下回再怎么问都说是传引用。。。
因为答案为传引用的面试题比例高太多了。。

面试问这些啊。。。
你是否是新手?
0 请登录后投票
   发表时间:2007-05-23  
是呀。
0 请登录后投票
   发表时间:2007-05-23  
我在javaeye中看到此题,我也回帖说“值传递和引用传递有很大争议。但我还是认为是引用传递。”,可是,,我以为是我回答是很软懦资,我回答是错误的。哎,所以以为是值传递。哎,所以,我觉得还是自己学的不精。(但,我觉得不应该javaeye里传递一些误人的东西,因为,我相信javaeye的势力)
0 请登录后投票
   发表时间:2007-05-23  
值传递和引用传递有很大争议。但我还是认为是引用传递。

如果没用特别的模式。
只有8+1是传值的。。用传值的方式去思考程序。
0 请登录后投票
   发表时间:2007-05-23  
很简单  你做一个test好了
不要让他把值return回来  做一个void方法  把map给他  然后在方法里改变  你在外面会看到map的值有变化  这就是因为给他的只是这个map的引用 如果是值传 外面的map应该不变吧

另外说明 基本类型是值传  你传一个String过去  如果不return的话  外面的String是不会变的
0 请登录后投票
   发表时间:2007-05-23  
抛出异常的爱 写道
值传递和引用传递有很大争议。但我还是认为是引用传递。

如果没用特别的模式。
只有8+1是传值的。。用传值的方式去思考程序。


老手可以说是 值传递 因为所有的参数传递都是传地值
新手应该回答 引用传递 区分primite和object的传递,当然object不能是不变模式下的 如String

两种回答所站的角度不一样,
新手回答是第一种不解释就不妙了,
说白了还是要理解,
goolge的结果记住了也没用。

byte short int long  float double char boolean + String 是这个意思吗?
0 请登录后投票
   发表时间:2007-05-23  
传什么无所谓。。。
主要是思考的方法。。。
找到问题的解决方式



你想一鸣惊人也成
但一定要把限定加上。。

比如你说完传值,之后加一句。这个值 是XX在栈中的地址偏移变量。

PS:如果想像传值一样传Object xx可以用 XX.clone()当参数
这样无论怎么改变原实例中的属性都不会有变化
1 请登录后投票
   发表时间:2007-05-23  
试过的  某些clone不会真的出来另一个值   而是出来另一个引用
和原obj指向同一个地方

如果没记错  list套map就不能clone
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics