引用无法解除,一旦初始化就一直引用着那个变量,不能再引用其他的,不然怎么不像指针一样有个指针常量。“将指针转换为对象"什么意思? 对指针所指对象的访问用p->或者p××××。
学过c/c++,然后学Java的人往往心中有此纠结,java中到底有没有指针?
如果一定要在是或否里选择一个,OK,java中没有指针。
那么,java中的引用(reference)和c/c++中的指针(如无特别说明,后文指针均指c/c++中的指针)究竟有着什么样纠葛不清的关系呢?
在开始之前先说一下c/c++的引用,它跟java的引用完全不是一个东西,c/c++的引用是同一块内存的不同名字。而java的引用是指向一个对象,引用本身也占用了内存。
首先,列举一下能对指针进行的一些常见 *** 作:
1、指向一个对象,如 Person p = new Person…;int iv = new int…
2、对指针所指的对象进行 *** 作:P->getAge(); (p)getAge();
3、获取存储在指针中的地址值。
4、将指针指向另外一个对象:Person p1 = new Person…; p = p1; 但,不可以p = p1这样来赋值。
5、删除new的空间,delete p1;
6、其它诸多 *** 作
这么多已经足够了,接下来看看java引用能做什么 *** 作。
a、指向一个对象,如Person p = new Person…
b、调用对象的方法,pgetAge();
c、指向另外一个对象,Person p1 = new Person…; p = p1;
OK,就这么多了。
对于a和1,他们的功能是类似的,但java引用无法指向一个基本变量。。
对于b,java引用和指针就不同了,在这点上,Java reference更像是解引用(dereference)了的指针;或者说java中的 *** 作符某种程度上等价于指针的-> *** 作符,如果是这样种解释的话,我们无法再对java的reference解引用了。
对c和4,是类同的。
除此,我们无法获取java引用存的地址,我们不能delete,还有很多……
综上,窃以为java的引用可以看成是一个功能受限的指针(或者说被阉割的指针)。另一方面,功能如此受限,它还能叫指针吗?了解了指针和java引用的区别与联系,还需要纠结“java中有没有指针”这个问题吗!
因为指针变量b尚未赋值,就访问它指向的内容,所以指令b=314;是失败的。
给指针赋值语句是这样的:
b=&a; // 也就是你程序中注释掉的那行
给指针指向的内容赋值语句是这样的:
b=314; // 前提是b必须先赋值
读取指针指向的内容的语句是这样的:
x=b; // 其中x是一个float类型的变量,并且前提是b必须先赋值
看看我能不能把你说明白,
1、普通指针:就是指向基本类型的指针,比如int
int p ;
int a= 10;
p = &a;
2、指向对象的指针:就是把基本类型改成你创建的类的实例,也就是对象,假设你有一个类叫做Student;
Student p;
Student d;
p = &d;
也可以 p = new Student();
以上就是关于怎么解除引用。C++里的。怎么将指针转换为对象。全部的内容,包括:怎么解除引用。C++里的。怎么将指针转换为对象。、java中到底有没有指针、关于C指针 如何获取指针指向的变量的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)