在c#中,可以使用关键字out标识参数传递,java中是否有类似的功能。我想把参数的值传回来,应该怎么做?
解决方案 »
- 第一次调用Webservice出错
- 在Linux下java如何通过jni获取IE的句柄,或者火狐浏览器的句柄
- 一个小问题,高手进来指导下
- ascii 码问题已经困扰我两天了
- 看看这个java Applet有什么问题
- 关于 CharBuffer的position() 和 Formatter的问题 jdk1.4以上
- 关于java控制cpu,内存的问题
- JAVA与中文问题???(中文出来就是乱码,换英文就正常)
- 求解下面这个多线程问题
- 求助一个关于java比较两个类的语句问题
- 所有的鼠标事件都由MouseListener监听接口的监听者来处理吗??
- 关于String类的charAt()与String数组结合使用的疑问
如果你学过C++的话,你可以说,java实际是传递的地址而不是引用.
参考<the java programming language>
我这儿可能没有说清楚,我是想说java中不能传递引用的地址,所以在java方法中引用比改变后,是不能被传递回去的 而c++可以传递变量地址的地址,所以c++函数调用的过程中可以更改传递过来的变量地址。另外,我理解java的引用其实和c中的句柄(指针的指针)是最为相似的,所以java中实际传递的是引用(or 句柄),而不是地址。
using namespace std;class Test {
public:
int a;
};void change(Test* test) {
test->a = 5;
test = new Test();
test->a = 8;}int main() {
Test* t = new Test();
change(t);
cout << t->a << endl;
}
指针可以实现对传递状态的改变,句柄同样也可以。java没有将指针作为引用的主要原因是从语言的安全性上考虑的,如果直接传递地址,则可能会出现c语言中的缓冲区溢出的错误,这个在java中从来没有听说过。