一个让很多人伤脑经的Java技术问题
来源:互联网 发布:淘宝货源供应商可靠吗 编辑:程序博客网 时间:2024/05/31 20:51
在Java中方法参数的传递,对象是传递引用,基本数据类型是传递值。而且一直一来都似乎没有人提出过疑问。
直到最近,我在为公司基本Java开发人员编写考试试卷的时候,我才发现,这错了!在方法中,Java语言中对象传递的是地址,而不是引用,这两个概念是有非常大的差别的,我相信熟悉c++的人都应该知道。
例如下面:假设对象Test有name的属性。
public void call(Test t) {
Test t2 = new Test();
t2.setName("cba');
t.setName("abc");
t = t2 ;
}
public static void main(String[] arg) {
Test obj = new Test();
call (obj) ;
System.out.println("obj"+obj.getName());
}
这个时候,你们可以发现,打印出来的是"abc" ,而不是"cba",原因是这样的,在这次调用中,等于声明了两个变量obj , t,它们指向的是同一个地址,调用call方法,只是将obj指向的地址传递给了t,而obj本身并没有传递过去(也就是没有传递引用),当你重新赋值的时候(也就是将对象引用指向其他存储空间),等于只影响了t,而没有影响obj。
这样的传递方式只能称之为址传递,或者是引用对象传递,而不嫩说是传递引用或者引用传递。
我不知道这究竟属于翻译的错误,还是我们理解的错误。但是这样的问题在c++中是有明显的区分的(通过*与&)
文章来自Massage Shanghai:http://www.massageshanghaiescort.com
- 一个让很多人伤脑经的Java技术问题
- 很有趣的一个数学题,让我死了很多脑细胞
- 一个有很多java电子书的网址
- 一个让98%的Java程序员犯难的偏门问题!
- 一个让98%的Java程序员犯难的偏门问题!
- 一个让98%java程序员犯难的问题的思考
- 关于USART很多人都容易忽视的一个问题
- 一个团队(很多人)都存在的共性问题
- 关于USART很多人都容易忽视的一个问题
- 找到一个有很多源代码的站网java examples
- 发现的一个不错的技术类网站!有很多好东东啊!!!!
- 看到一个国外网站,挺不错的,很多相关的c语言技术很有见解
- 涉及很多技术 很多业务功能的一篇文章
- 我的第一篇博客,作为一个Java新菜鸟,或许我的问题会很多,但是这不是我退缩的理由。
- 让我很纠结的一个问题
- 一个让人哭笑不得的问题
- 一个让我很困扰的问题
- 【热门技术】解决Win7 下面很多软件安装不兼容的问题
- WebSphere性能诊断与调优
- 关于拷贝构造函数和等号运算符重载的试验
- 开始
- 学习了
- DOMDocument 与 FreeThreadedDOMDocument 的使用方法
- 一个让很多人伤脑经的Java技术问题
- javascript API
- LoadRunner 安装方法与系统环境初始化过程
- 学习struts-hibernate-spring
- VS 2010构建云服务
- tomcat6.5下https环境的搭建
- MINIGUI成功移植到MINI2440详解
- 求高手指点
- Sybase跨平台dump/load 操作说明