Cpp与Java的区别

1、区别

比较的基准CppJava
平台依赖依赖不依赖
预处理机制
内存管理程序员可访问可控制系统控制
继承模式允许单继承和多重继承只允许具有抽象接口的单继承
可移植性必须为平台重新编译源代码,因此代码不可移植字节码(.class文件)可移植到平台特定 JVM

2、解释

  1、Java 源代码在编译时被转换为字节码。编译器编译的过程将.java文件变为.class文件,.class文件是JVM看得懂的文件。在运行时,JVM再将这种.class文件类型的字节码转换成机器可以识别的机器语言,即解释器执行这个字节码并给出输出。大多数情况下,Java 是一种解释性语言,因此与平台无关;而C++ 使用编译器来编译和运行源代码。它将源代码转换为机器语言。因此 C++ 是平台相关的。因此,这也导致Java执行的速度比Cpp慢!
  2、Java没有预处理机制。若想使用另一个库里的类,只需使用import命令,并指定库名即可。不存在类似于Cpp预处理机的宏。C/C++在编译过程中都有一个预编泽阶段,即众所周知的的预处理器。综上,Java虚拟机虽然没有预处理器,但它提供的引入语句(import)与C++预处理器的功能类似。
  3、Java通过垃圾收集器自动进行无用内存回收操作,不需要程序员进行删除;而Cpp中必须由程序员释放内存资源,增加了程序设计者的负担。
  4、在 C++ 中,当定义一个新的类 B 时,如果发现类 B 拥有某个已写好的类 A 的全部特点,此外还有类 A 没有的特点。那么就不必从头重写类 B,而是可以把类 A 作为一个“基类”(也称“父类”),把类 B 写为基类 A 的一个“派生类”(也称“子类”)。这样,就可以说从类 A “派生”出了类 B,也可以说类 B “继承”了类 A。[单继承基本概念]
      C++支持多重继承,它允许多父类派生一个类。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。
  5、在Java中定义变量名只是创建了一个新的标识符,跟创建对象没有关系,创建对象必须通过 new 来完成,只有创建对象时才会申请内存空间(如果没有new那就是一个空引用);而C++ 中定义的变量名不仅仅是个标识符,还自动关联着栈中的一块内存空间。C++ 中的 new 操作符表示的是在堆中申请内存。
  6、Java中原始类型和引用类型不一致。原始类型是类,引用类型是对象。使用原始类型无须调用 new,也无须创建对象。比方说 : 原始类型 int i = 3;引用类型 Integer i = new Integer(3)
        而在Cpp中,类型名 & 引用名 = 某变量名 定义了一个引用。某个变量的引用,等价于这个变量,相当于该变量的一个别名。 int a = 3; int & b = a; b表示一个引用,b引用了a,是int类型。

3、参考

  1. Difference Between C++ and Java
  2. 博客园——C++与Java比较
  3. JAVA与C++之间的区别

4、思考

        C/C++是会考虑到编译器的“感受”的,而Java更多考虑的是程序员的"感受"。与C/C++相比,Java把很多编程的细节都黑箱化了。思考来自该知乎“C++与java多态的区别 ?”的高赞评论

        会不定期更新~觉得不错记得三连哦,有问题也请指出,谢谢!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TerryBlog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值