1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的。从这里就可以看出 C++ 的 OO 思想不够彻底,至少在封装这一点上。

2. C++ 中有拷贝构造函数,可以把一个对象的属性 copy 到另一个对象里 , 也叫对象赋值,而 Java 是用 Clone 实现的。

3. Java 的世界是 Object 世界(当然除了基本类型,这是 Java 美中不组的一点),对象之间的关系是 Reference 的,象 C++ 中的指针,我们叫他句柄。但在 C++ 中对象之间是可以直接赋值的!在Java 中只是句柄和句柄之间的转换! Java 和 C++ 都有 this, 在 C++ 中 this 表示指针,而在 Java 我们叫他引用。但在用法上大同小异。

4. C++ 中有所谓的析够函数,而 Java 中也有一个类似的东西叫做 finalize, 是 Object 类的一个方法, 但 Java 中有个很好的东东就是自动回收机制。而 C++ 中你 new 的东西不 delete 的话是不会自动清理内存的,所以 Java 要省事些啊 !

5 . C++ 的函数有个默认的概念,在 Java 中是没有的。但 JDK1.5 的范型的 String… 参数似乎有点象 , Java 在最初抛弃 C++ 一些思想之后,现在似乎也慢慢也入了一些东西!

6. static 关键字 , C++ 和 Java 中意思基本相同, C++ 中 static 变量必须在类外初始化。

7. C++ 中的对象成员要在本类的构造函数之前构建,而 Java 没有这个规则, Java 的对象和普通变量一样简单。

8. C++ 有个常量修饰符 const, 而 Java 中一个常量一般是用 static + final 等价实现。

9 .可能写 Java 的朋友很不习惯的就是 C++ 的每个类都有个分号结尾。

10 . Java 有个很好的东西叫包,使得全世界的类不会发生冲突。在 C++ 也有一个类似的东西叫做作用域运算符 “ :: ” 表示。

11 . Java 在子类的方法重载中要想调用父类的同名方法只要用 Super 关键字,而在 C++ 中要用基类名 + 域运算符( :: )以达到同样的效果。

12. C++ 有多重继承,而在 Java 中只是单根继承,但是用 Java 的接口可以达到类似的效果。多重继承有二义性,但可用虚基类( virtual )解决该问题。

13. Java 中的多态完全是继承的原因,而 C++ 除了继承又引入了虚基类和虚函数(实现了运行时多态性)的概念。

14. C++ 中声明了纯虚函数的类为抽象类,而在 Java 中有 abstract 声明的 Method (当然类也要用 abstract 修饰) 就是抽象类 , 在抽象类方面 Java 原自 C++, 即两者观念上是一致的。

15 . Java 中的对象全都是 new 出来的,而 C++ 不同,当然他也有 new 功能, Java 中理论上你可以随意 new Object, 他有 gc 这个对象管家,而 C++ new 的 Object 你一定要手动 delete 他。

16 . C++ 中有运算符重载 , Java 里只有 + 号有重载的意思,不过在 JDK5 中也有其他的运算符重载,比如两个类对象可以直接相加。 C++ 可以将自定义类型强制转换为基本类型,如将一 Test 类的对象,强制转换为 int 类的对象,要达到这个效果就要用到 operator 关键字, Java 除了 8 大基本类型以外都是 OO 的,但 Java 也提供了基本类型的对应 Class 类型。

17 . C++ 中有模板的概念 ( 类模板,函数模板 ) ,在早期的 Java 版本 (1.4 之前 ) ,没有模板的概念,但 1.5 引入了范型,与模板的思想类似,这可是好东西。如果你看 Java 原码库,你会发现他变化的好大。

小结 :

1. 学习任何东西,往往在对比中会有更好的收获。

2. 当然 C++ 和 Java 还有很多不同,这里就不一一列举,感性趣的朋友可以继续总结。

3. 相比之下你会觉得 Java 的世界更美好。但要学好 Java 你没有理由不去学 C++ 。

文章出处:http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html

C++ 与 Java 语言对比的更多相关文章

  1. JAVA语言对比C++语言的几个优点和自身的关键特性

    之所以写这篇博客不是为了比较JAVA语言和C++语言到底孰优孰劣,而是从语言本身出发进行对比总结程序编码设计上的差别.因水平有限,某些内容可能太过片面,欢迎指正和讨论. JAVA语言在设计上很好地借鉴 ...

  2. java语言对比,jvm,垃圾回收

    1.java/c++/ruby/python集中语言的对比 java和c++ 1,没有指针 2,没有多继承 3,没有const 4,在实现多态上的区别    tc++里面的虚函数,纯续函数和java里 ...

  3. iOS 开发学习-类的创建与实现,与java语言的对比

    Person.h #import <Foundation/Foundation.h> @interface Person : NSObject { //在{}中定义属性(全局变量/实例变量 ...

  4. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  5. Java语言与C++语言的差异总结

    Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...

  6. Java语言速览:StackOverflow

    关于 java Java(请不要与 JavaScript 搞混)是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言.一般将安装了相关工具可以开发并运行 Java 程序的电脑系统称为 ...

  7. 采用Java语言如何实现高速文件复制?

    今天review代码也看到了"大神"用老方法来实现文件拷贝.今天归结一下使用Java语言怎样实现高速文件复制: 代码1--使用文件通道的方式: import java.io.Fil ...

  8. 概述java语言

    1.java语言是什么? java是一门面向对象的高级语言,它吸收了c++语言的各种优点,还摒弃了C++里难以理解的多继承和指针等概念,因此Java语言具有功能强大和简单易用两个特征. 2.java语 ...

  9. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

随机推荐

  1. [JWT] JWT Signature With RS256 - Learn The Advantages Compared to HS256

    The advantage of RS256 over HS256 is RS256 no longer need to share the secret key between client and ...

  2. ASM(四) 利用Method 组件动态注入方法逻辑

    这篇继续结合样例来深入了解下Method组件动态变更方法字节码的实现.通过前面一篇,知道ClassVisitor 的visitMethod()方法能够返回一个MethodVisitor的实例. 那么我 ...

  3. 洛谷 P2693 [USACO1.3]号码锁 Combination Lock

    P2693 [USACO1.3]号码锁 Combination Lock 题目描述 农夫约翰的奶牛不停地从他的农场中逃出来,导致了很多损害.为了防止它们再逃出来,他买了一只很大的号码锁以防止奶牛们打开 ...

  4. WinXP局域网共享设置

    关闭局域网共享 1.不允许SAM帐户和共享的匿名枚举(系统默认是允许的). 组策略-计算机配置-Windows 设置-安全设置-本地安全策略-安全选项-网络访问:不允许SAM帐户和共享的匿名枚举. 设 ...

  5. 手机用appnium,web自动化用eclips+webdriver2

    手机用appnium,web自动化用eclips+webdriver2 吴建清 pycharm 1.安装环境2.pycharm类似eclipse,写脚本,运行脚本3.uiautomatorviewer ...

  6. 微服务实战(一):微服务架构的优势与不足 - DockOne.io

    原文:微服务实战(一):微服务架构的优势与不足 - DockOne.io [编者的话]本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战 ...

  7. 推荐一款稳定快速免费的前端开源项目 CDN 加速服务

    前面学习到什么是CDN,全称是Content Delivery Network,即内容分发网络.CDN的通俗理解就是网站加速,CPU均衡负载. CDN的基本思路是尽可能避开互联网上有可能影响数据传输速 ...

  8. Thread Safety in Java(java中的线程安全)

    Thread Safety in Java is a very important topic. Java provide multi-threaded environment support usi ...

  9. spring接收对象数组实例

    JS var param= new Array(); var one= new Object; one.id = '1'; one.name= 'simba1'; param.push(one); v ...

  10. GCC 编译 --sysroot

    -sysroot 的作用 如果在编译时指定了-sysroot就是为编译时指定了逻辑目录.编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录. 如 ...