java语言相对于c和c++而言,提高了开发者的开发效率,主要得益于java对于内存的管理:
1、java中没有通过使用强制转换指针类型或者通过进行指针运算访问内存的方法
2、java使用对象严格遵守类型规则;如果存在一个mountain类型的对象引用,它只能作为mountain对象来使用,不能作为其他对象来操作;将这个引用转换成别的类型也是可以的,但是
只有在此对象的确为这种新类型的情况下才可以;例如:animal类型的对象引用,可以强制转换为dog类型(一种特殊的animal类型);由于java不会以可能导致内存冲突的方式管理
内存,因此java中很少出现c++中的降低程序员效率的bug
3、java避免无意间破坏内存的另一个方法是自动垃圾收集,java和c++都有new方法为新对象在堆中分配内存,但是java中没有delete操作清除不再需要的对象,c++中需要deleted操作删 除不需要的对象,java中只要停止对象的引用,一段时间后,垃圾收集器会自动回收对象占用的内存。c++的对象引用由程序员决定是否清除,如果不再使用而没有被释放 会导致内存泄漏,重复释放会导致内存冲突,从而导致程序崩溃。java在垃圾收集上没有纠缠不清,程序员不再为显式释放内存担心,从而提高了效率。
4、数组边界检查:java不允许数组超出边界 从而引发内存冲突。
5、对对象引用的空值检查:java不允许对象引用为空值,c++使用空指针 会导致程序崩溃,java的操作对象为空值 只会抛出异常,而程序不会崩溃;
1、java中没有通过使用强制转换指针类型或者通过进行指针运算访问内存的方法
2、java使用对象严格遵守类型规则;如果存在一个mountain类型的对象引用,它只能作为mountain对象来使用,不能作为其他对象来操作;将这个引用转换成别的类型也是可以的,但是
只有在此对象的确为这种新类型的情况下才可以;例如:animal类型的对象引用,可以强制转换为dog类型(一种特殊的animal类型);由于java不会以可能导致内存冲突的方式管理
内存,因此java中很少出现c++中的降低程序员效率的bug
3、java避免无意间破坏内存的另一个方法是自动垃圾收集,java和c++都有new方法为新对象在堆中分配内存,但是java中没有delete操作清除不再需要的对象,c++中需要deleted操作删 除不需要的对象,java中只要停止对象的引用,一段时间后,垃圾收集器会自动回收对象占用的内存。c++的对象引用由程序员决定是否清除,如果不再使用而没有被释放 会导致内存泄漏,重复释放会导致内存冲突,从而导致程序崩溃。java在垃圾收集上没有纠缠不清,程序员不再为显式释放内存担心,从而提高了效率。
4、数组边界检查:java不允许数组超出边界 从而引发内存冲突。
5、对对象引用的空值检查:java不允许对象引用为空值,c++使用空指针 会导致程序崩溃,java的操作对象为空值 只会抛出异常,而程序不会崩溃;