java里没有了指针,用户不能随便访问地址,但是也没有意义!因为1
c语言里面,虽然指针可以随便访问,但是一个程序是只能访问自己的进程空间地址的,是无法访问其他程序的地址空间的,所以指针程序不会对其他程序造成影响。因为2 java里虽然没有指针,但是有引用,引用照样可以造成跟指针一样的错误,那就是访问空引用,如果没有try,照样会崩溃。
没有指针的唯一的好处好像就是是,程序不会误修改属于自己的内存空间的东西了。但是,引用一样可以到处乱指。所以我还是没有明白,java没有了指针所能避免的错误是什么。是不是可以这么理解,java少了指针,只是少了一个容易引起错误的语言特性,但是这些错误并没有因为少了个这个特性而不会发生。
c语言里面,虽然指针可以随便访问,但是一个程序是只能访问自己的进程空间地址的,是无法访问其他程序的地址空间的,所以指针程序不会对其他程序造成影响。因为2 java里虽然没有指针,但是有引用,引用照样可以造成跟指针一样的错误,那就是访问空引用,如果没有try,照样会崩溃。
没有指针的唯一的好处好像就是是,程序不会误修改属于自己的内存空间的东西了。但是,引用一样可以到处乱指。所以我还是没有明白,java没有了指针所能避免的错误是什么。是不是可以这么理解,java少了指针,只是少了一个容易引起错误的语言特性,但是这些错误并没有因为少了个这个特性而不会发生。
在c里面这些工作都需要程序员去做.
我觉得就是方便.
str.length(); 这个时候如果obj.fun返回的是null,如果这儿没有被try,程序照样会崩溃。
C的指针,可以指到任意一段内存(许可的范围),因此可以利用这个特点制造溢出
Java的引用,只是能引用JVM构造的一系列对象,如何能随便引用内存?
你举的例子,只是表明,str1重新引用了一个常量,而常量是在ConstantPool里预先初始化好的串,怎么能表明str1可以随心所欲地引用其他的内存区域?
如果在编程时,发生了NullPointException只能表明你的程序有Bug,语言如何能给你保证不能出现NullPointerException?
另,是否出现NullPointerException是你程序设计的时,跟语言的设计没有关系
C中的指针会因为一些偏移操作而修改了其他的数据
而引用是在自己合法的返回内部进行操作!而java中的null你完全可以理解为一个对象,调用一个没有任何方法的对象当然会出错~其他的不与解释~楼主慢慢会明白~
null的话,说明这个对象压根就不存在,访问它的方法,失败是必然的。不是什么指针乱指的问题。