论坛首页 入门技术论坛

澄清:Java中只有按值传递,没有按引用传递!

浏览 17005 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-08-04  
引用,值.
A a         //a 是一个引用(会在栈上分得空间).
= new A(); //new A()这是一个值(一个对象会在内存堆上分得空间).

test(A arg){
}
就算你调用test(new A()),它在执行过程也是有名的:arg.
只是你传入了一个匿名的值.

0 请登录后投票
   发表时间:2008-08-05  
其实关键看你对引用怎么理解了
0 请登录后投票
   发表时间:2008-08-06  
java程序语言设计总是使用传值调用。 但当方法的参数类型是对象或数组等引用类型时,在方法调用中传递给该参数的仍然是调用程序中对应的变量的值,即对某个对象或数组的引用
0 请登录后投票
   发表时间:2008-08-08  
1.基本数据类型按值传递
2.对象类型按引用传递,只不过不是直接把指向对象的引用传递过去,而是再复制一个引用,将复制的引用作为参数传递
0 请登录后投票
   发表时间:2008-08-10  
什么值传递,什么值传递的,如果在面试的时候出这种题就有点弱智了。还不如干脆写出来一段程序让面试者写出输出结果呢。这样可以避免大家对概念的理解不一致的问题。
0 请登录后投票
   发表时间:2008-08-12  
这应该是新手帖吧,可惜我评不了啊.

对于概念性的问题讨论太多没意义.
0 请登录后投票
   发表时间:2008-08-12  
java感觉应该还算是引用传递啊

A a=new A();

其实a只是一个8字节指向堆地址的引用,而对另外一个B b=a;也只是将这个堆地址扔给了b.

而基础类型的值传递,也只是这个引用指向了栈区的常量池(不是很确定在栈)。

所以感觉这问题是怎么理解引用传递的吧?如果把堆地址就看做值的话,那就可以说是值传递了.不过就算说是值传递,其实跟引用传递本质有区别么?
0 请登录后投票
   发表时间:2008-08-12  
norwolfli 写道
这应该是新手帖吧,可惜我评不了啊.

对于概念性的问题讨论太多没意义.

概念问题没太多讨论意义?你能保证java能写一辈子,以后有需求需要你写点c,那不是...
0 请登录后投票
   发表时间:2008-08-12  
为什么现在都喜欢把简单问题复杂化,不理解
0 请登录后投票
   发表时间:2008-08-13  
同意lz的意见,值传递和引用传递本来都有明确的含义,java程序员不应该轻易破坏这些约定。
0 请登录后投票
论坛首页 入门技术版

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