关于Java中指针的探讨

来源:互联网 发布:百分百营销软件流量 编辑:程序博客网 时间:2024/03/28 20:00
引用和指针还是差别的。
C中的指针还可以进行运算,比如p++,但Java中的引用绝对不可以。

java内部有,比如对象内部有指向方法的方法指针等,但java中不能直接操作指针,把指针的操作封装了,比如封装成引用,所以java的地址操作更加安全。

java的引用明明和指针没什么本质区别,java为什么还宣称没有指针并把这个当作语言的优点? 
java声称没有指针,但给我的感觉是根本所有变量都是指针在控制,只不过很多指针的功能被限制了,这怎么能算没有指针呢?

java的引用是c/c++用指针实现的,但不是说java语言本身需要指针。
为什么java语言要用c/c++来实现?因为这个语言是我们用的冯诺依曼结构计算机的直接映射。
为什么可以不用c/c++?因为我们的应用可以跑在抽象结构上,这个结构上不需要指针。
还有不需要指针的结构吗?当然,丘齐体系。
还有用c/c++(包括指针)实现的其他无指针的语言吗?当然,python,haskell,ocaml。

补充:忘了说一句,指针在冯诺依曼结构上直接映射的是间接寻址(什么是间接寻址?)

1: java有指针,在java中称为 引用。 所谓的引用就是内存地址的值。拿到该引用就相当 于得到了该内存处的对象。

2: java中可以使用指针(我们称之为引用),但不能修改引用。  如C++中可以 进行pointer++; 在java中是错误的。(Integer,Float等包装类除外,因为java有自动封箱、解箱特性)。  这就好比:在java中可以坐飞机到指定的目的地,但是你不能开飞机(安全)。但是在C++中可以自己开飞机(操作飞机)--具有危险性。


它没有显式的使用指针,其实Java语言内部的实现机制来说是肯定有指针的,用不用一样东西是看有没有必要去用。Java是一个纯面向对象的语言,基本上来说,程序员不需要关心内存的分配与释放的操作(jre、虚拟机帮忙做了),既然不关心内存那么没必要引入指针这么种相对复杂而容易重大错误的一种形式。其实Java里边充斥着引用的说法,从某种角度上说,引用就是指针的简化版。。。
0 0