参考

Java 中,一切皆是类

Java 中,所有数据或方法都要放在类中。如果想获得与全局函数等价的功能,可将static方法和static数据放在类里。而 C++ 中有 struct 结构、enum 枚举、union 联合等各种组织形式。

Java 代码:

public class T {
public static void main(String[]args) {
System.out.println("hello world");
}
}

C++ 代码:

#include <iostream>
using namespace std;
int main()
{
cout << "Hello,C++ world of AnycodeX!" << endl;
return 0;
}

Java 中,只有类定义,没有类声明,且结尾不需要分号

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;
};

Java中没有作用域范围运算符“::”

C++ 因为语言特点(先定义的方法看不到后定义的),经常需要在类外部定义类的方法,需要作用域范围限定符“::”。

Java中 char 类型使用16位Unicode字符集

Java中不必进行提前声明

若想在定义前使用一个类或方法,直接使用即可,编译器会保证使用恰当的定义。而在 C++ 中,定义前使用会导致编译错误。

Java用包代替了C++的命名空间

通过包,Java 可以针对类名进行类似于命名空间分解的操作。我们只需“import”导入一个包,剩下的工作会由编译器自动完成。

Java中没有C++那样的指针

用 new 创建一个对象的时候,会获得一个引用。指针在带来灵活性的同时,也带来了安全隐患和更高的复杂度。

Java采用了单根式的分级结构

Java 中,所有对象都是从根类 Object 统一继承的。而在 C++ 中,可以在任何地方启动一个新的继承树,所以最后往往看到包含了大量树的“一片森林”。在Java中,无论如何都只有一个分级结构。尽管这表面上看似乎造成了限制,但由于我们知道每个对象肯定至少有一个Object接口,所以往往能获得更强大的能力。C++目前似乎是唯一没有强制单根结构的唯一一种OO语言。

Java中内存实现了自动管理

Java 中内存的分配和回收由Java虚拟机实现。Java 中有垃圾自动回收机制,会自动清理引用数为0的对象。而在 C++ 编程时,则需要花精力考虑如何避免内存泄漏。

Java内建了对多线程的支持

利用 Thread 类,可通过继承创建一个新线程(放弃了run()方法)。

若将synchronized(同步)关键字作为方法的一个类型限制符使用,在对象这一级会发生互斥:在任何时间,只有一个线程能使用一个对象的synchronized方法。只有在这个方法退出后,才会将对象“解锁”。在线程之间,我们仍然要负责实现更复杂的同步机制,方法是创建自己的“监视器”类。

Java是单继承的,但可以实现多个接口

Java 用 interface 关键字创建抽象基础类的等价物。在其中填充抽象方法,且没有数据成员。这样一来,对于仅仅设计成一个接口的东西,以及对于用extends关键字在现有功能基础上的扩展,两者之间便产生了一个明显的差异。

通过接口实现和类的继承,Java 中可以实现类似多继承的效果。

最新文章

  1. Zookeeper分布式集群搭建
  2. ACM 16进制的简单运算
  3. 广度优先搜索 cdoevs 1226 倒水问题
  4. 【Matplotlib】 刻度设置(2)
  5. Could not find file &#39;..\bin\hibernate.cfg.xml&#39;解决方法:
  6. angularjs的一些优化小技巧
  7. range() 函数创建并返回一个包含指定范围的元素的数组
  8. jQuery如何设置自增自减值
  9. zf-监察系统的左侧菜单树的表
  10. 分辨率验证工具 - 【Window Resizer】的使用 - Google扩展工具
  11. js基础:对DOM进行操作,删除、添加元素
  12. onclick与this
  13. Python基础学习篇章三
  14. 【代码笔记】Web-JavaScript-JavaScript void
  15. 家庭记账本小程序之删(java web基础版四)
  16. Java中的生产消费者问题
  17. Windows 访问 CentOS 7 共享文件夹 Samba 配置
  18. mysql数据库数据的 备份以及还原
  19. 微信小程序des加密、PHP des解密
  20. ubuntu下安装owncloud提示没有zip模块时

热门文章

  1. CentOS6.4运维知识点1
  2. Decision Trees 决策树
  3. shell之文本过滤(正则表达式)
  4. ESP8266-01
  5. 解决git 命令出现end问题
  6. vim插件cscope使用方法
  7. 计蒜客 T2237 魔法 分类讨论
  8. POJ 3046 Ant Counting ( 多重集组合数 &amp;&amp; 经典DP )
  9. 约数定理(two)
  10. [CF938E]Max History题解