Java和C++的九点区别

来源:互联网 发布:c语言运算符号有哪些 编辑:程序博客网 时间:2024/05/22 13:38
1、C++多重继承机制,而JAVA只允许单继承,JAVA通过接口机制延续C++多个一致性的特点,并省去了多继承在实现和维护上的复杂性。
2、Java的垃圾回收采用垃圾回收器(Garbage Collection)。C++是需要程序员自己写析构函数来释放内存的,复杂且容易忘记而导致内存泄露。Java语言对内存的分配管理是通过JVM 内部机制决定的。垃圾回收意味着在Java 中出现内存漏洞的情况会少得多,使许多编程问题消弥于无形之中。
(PS:GC管理的是堆内存,栈内存和C++一样,超过变量作用于,系统自动释放)
3、Java使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。GC只知道释放那些由new分配的内存,所以不知道如何释放对象的“特殊”内存。为解决这个问题,Java提供了一个名为finalize()的方法,它的工作原理应该是这样的:一旦GC准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作(如关闭流等操作)。
4、toString方法。C++中的“+”操作符自动调用了toString方法,它是C++里面一个自动使用的方法。而Java则必须显式调用。
5、异常机制和“finally"。Java的异常处理机制能够防止异常对系统更严重的破坏,在这方面,优于C++的异常处理机制。
6、线程技术。
7、Java无法操作符重载,这点让我很失望。
8、模板类(Templates)是C++最精彩的一部分,而Java没有。我认为Java后续发布的版本应该考虑这个问题。
9、带标志的break和continue,相当于C++里面的goto语句,但是Java里面没有goto保留字。
原创粉丝点击