参考html
Java 中,全部数据或方法都要放在类中。若是想得到与全局函数等价的功能,可将static方法和static数据放在类里。而 C++ 中有 struct 结构、enum 枚举、union 联合等各类组织形式。java
Java 代码:ios
public class T { public static void main(String[]args) { System.out.println("hello world"); } }
C++ 代码:web
#include <iostream> using namespace std; int main() { cout << "Hello,C++ world of AnycodeX!" << endl; return 0; }
C++ 则须要结尾的分号,不然编译报错 error: expected ';' after class definition
。编程
C++ 代码:安全
#include <iostream> using namespace std; int main() { cout << "Hello,C++ world of AnycodeX!" << endl; return 0; } class T { private: int a; };
C++ 由于语言特色(先定义的方法看不到后定义的),常常须要在类外部定义类的方法,须要做用域范围限定符“::”。多线程
若想在定义前使用一个类或方法,直接使用便可,编译器会保证使用恰当的定义。而在 C++ 中,定义前使用会致使编译错误。svg
经过包,Java 能够针对类名进行相似于命名空间分解的操做。咱们只需“import”导入一个包,剩下的工做会由编译器自动完成。函数
用 new 建立一个对象的时候,会得到一个引用。指针在带来灵活性的同时,也带来了安全隐患和更高的复杂度。spa
Java 中,全部对象都是从根类 Object 统一继承的。而在 C++ 中,能够在任何地方启动一个新的继承树,因此最后每每看到包含了大量树的“一片森林”。在Java中,不管如何都只有一个分级结构。尽管这表面上看彷佛形成了限制,但因为咱们知道每一个对象确定至少有一个Object接口,因此每每能得到更强大的能力。C++目前彷佛是惟一没有强制单根结构的惟一一种OO语言。
Java 中内存的分配和回收由Java虚拟机实现。Java 中有垃圾自动回收机制,会自动清理引用数为0的对象。而在 C++ 编程时,则须要花精力考虑如何避免内存泄漏。
利用 Thread 类,可经过继承建立一个新线程(放弃了run()方法)。
若将synchronized(同步)关键字做为方法的一个类型限制符使用,在对象这一级会发生互斥:在任什么时候间,只有一个线程能使用一个对象的synchronized方法。只有在这个方法退出后,才会将对象“解锁”。在线程之间,咱们仍然要负责实现更复杂的同步机制,方法是建立本身的“监视器”类。
Java 用 interface 关键字建立抽象基础类的等价物。在其中填充抽象方法,且没有数据成员。这样一来,对于仅仅设计成一个接口的东西,以及对于用extends关键字在现有功能基础上的扩展,二者之间便产生了一个明显的差别。
经过接口实现和类的继承,Java 中能够实现相似多继承的效果。