作者adrianshum (Alien)
看板java
标题Re: [问题] 有关於 Java 的指标
时间Thu Aug 1 09:32:56 2013
※ 引述《lairrol (Hammer)》之铭言:
: 想请问一下在 Java 中没有类似 C/C++ 中 & 的用法吗?
: 小弟我在学 C/C++ 可以做下面这样的事
: 可以利用 & 做传址给副程式做一些运算
: #include <iostream>
: using namespace std;
: void add(int &a, int &b)
: {
: a++;
: b++;
: }
: int main(void)
: {
: int a = 1, b = 1;
: cout << a << b << endl;
: add(a,b);
: cout << a << b << endl;
: }
: 但是小弟在学 Java 的时候无法用 & 来做类似的事
: 查了一下版上的资料有讨论到这部份的问题
: 我还是有点难理解 Java 中没有 & 这种事....
首先,& 在 C/C++ 中有多种用途。你的例子的用法正正 *不是*
C/C++ 共有的用法。& reference 只在 C++ 有,在 C 里是没有的。
简单来说,Java 没有这种 reference 的概念。
你要是懂 C 的话就好办。Java 与 C 一样,只有 pass-by-value.
在 primitive type 的情况下,用C 的方法去理解就好。特别的地
方在於非 primitive type.
Java 中的 Foo foo; 其实差不多可以理解为 C/C++ 的 pointer.
即是 Foo* foo
所以假如有一 Java 的 method 长这样:
void Bar(Foo foo)
其实就等同於 C/C++ 的
void Bar(Foo* foo)
要怎麽利用这种等性去做到类似pass-by-ref 的效果,懂 C/C++
的话我想你大概就心中有数了。
简单来说,最多只做到有点类似的效果,没法达成 C++ 的 reference
等同的效果。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.19.42.175
1F:推 lairrol:看了大家的回应大概有个底了~感谢!! 08/01 11:52