当前位置: 技术问答>java相关
JAVA中的引址和C++中的指针有什么区别??高手向教!!
来源: 互联网 发布时间:2015-04-22
本文导语: JAVA中的引址和C++中的指针有什么区别??高手向教!! | 所以说Java的对象参数也是按值传递的。 传递的是对象的地址值。 不像C++的按引用传递。 举个例子: Java程序 Class A{ void change(A o...
JAVA中的引址和C++中的指针有什么区别??高手向教!!
|
所以说Java的对象参数也是按值传递的。
传递的是对象的地址值。
不像C++的按引用传递。
举个例子:
Java程序
Class A{
void change(A o){
o = null;
}
public static void main(String[] args){
A a = new A();
A b = new A();
a.change(b);//这里执行后b!=null
}
}
C++程序
class A{
public:
void change(A &o);
}
void A::change(A &o){
o = NULL;
}
void main(int argc,char** argv)
{
A a();
A b();
a.change(b);//这里b==NULL;
}
传递的是对象的地址值。
不像C++的按引用传递。
举个例子:
Java程序
Class A{
void change(A o){
o = null;
}
public static void main(String[] args){
A a = new A();
A b = new A();
a.change(b);//这里执行后b!=null
}
}
C++程序
class A{
public:
void change(A &o);
}
void A::change(A &o){
o = NULL;
}
void main(int argc,char** argv)
{
A a();
A b();
a.change(b);//这里b==NULL;
}
|
C++中的指针可能移动或进行相关的指针操作
char* p = new char[4];
++p = 'a';
而java中的所谓的指针是不可以的,只能重新赋值。
Object o1 = new Object();
Object o2 = new Object();
o1 = o2;
而o1++ 或++o1类似的操作是绝对不允许的。
char* p = new char[4];
++p = 'a';
而java中的所谓的指针是不可以的,只能重新赋值。
Object o1 = new Object();
Object o2 = new Object();
o1 = o2;
而o1++ 或++o1类似的操作是绝对不允许的。
|
java用引用而不是指针,完全是为了安全。
多看看书你就会明白,我是从c++转java的,也有过迷茫阶段。
共同学习了!
多看看书你就会明白,我是从c++转java的,也有过迷茫阶段。
共同学习了!
|
我认为JAVA中的传值更多是象指针引用,是地址拷贝而不是值拷贝