Java为什么没有指针
为了摒弃指针带来的风险(当然了,也就放弃了指针带来的效率)。
1、C/C++为什么有指针?
这个很简单,程序都是在内存中运行的,只要有内存,就有内存地址,有地址,就必然有指针,只是C++对内存地址的访问做了语言的支持,称之为指针。
2、指针的优点?
a、效率,指针就是内存的地址访问(虽然不是真正的物理地址,但是通过简单的映射就可以得到),性能非常好。
b、C/C++语言的需要,C/C++没有完善的面向对象支持,因此你不能声明一个Object类型的形参来接收所有类型的实参,因此C++只能通过万能指针void*来支持,C++中new出来的对象都是指针类型的(区别于直接声明一个类对象,Java中声明一个类的对象不实例化就是null,C/C++中对象类型可以像基本类型那样直接声明一个)。
3、指针的缺点?
a、稳定问题,指针太灵活,不小心就容易出现指针访问越界之类的问题,非常容易出问题。
b、安全性问题。
4、java有类似指针,在java中称为引用。所谓的引用就是内存地址的值。拿到该引用就相当 于得到了该内存处的对象。
Java认为,程序员应该花更多的精力在业务代码上,而不是语言相关的部分。所以Java的目标就是,尽量帮你完成不需要你关注的工作:指针管理、对象管理...
通过研究,Java认为,所有语言中需要使用指针才可以实现的代码,Java通过纯面向对象也可以给你支持。
(哈希表)