有些人觉得java里面没有指针。关于这个问题,我是这样理解的,java中是有指针的,但是它的存在无法体现出来。
对于java中的基本变量类型(byte,int,float)等,我们无法获得其在内存中的地址,也就无法使用指针。但是声明类的对象时的情况不同。java中声明对象的基本语法形如 classA
a=new classA(); 比c++少一个代表指针的“*”号,但是这并不代表a不是一个指针,而是因为在java中,只有new这一种声明对象的方式,所以得到的都是指针,便将代表指针的“*”
号省略了。如运行以下代码
classA a=new classA();
classA b=a;
此时虽有a,b两个变量,但内存中只分配了一个classA类的内存空间,所以a和b确实是指针。
但是虽说a和b时指针,但是我们却无法通过其对内存地址实施任何操作,Java中的“&”和“*”不存在像c语言中的用法,也就是说我们根本不需要关心指针的存在,因为这里的指针已
经失去了其在C语言中改变内存地址的功能。
综上所述,Java中存在指针,但已经失去其原有的功能,加上Java的gc回收机制,指针简直就是毫无存在感,所以有些地方说Java中没有指针应该也是说的通的。