关闭

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

发表于:2014-8-14 09:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Jessica程序猿    来源:51Testing软件测试网采编

  31、Java中子类构造函数中通过super关键字来显示初始化父类的构造函数,而C++直接调用父类构造函数来进行初始化。
  32、Java支持关键字final用于定义常量、不能改变的函数参数、不能被覆盖的方法和不能被继承的类,而C++对于前两种通过通过define和const关键字支持,对于后两种不支持。
  33、Java用abstract关键字表示类的抽象方法,而C++用类似的纯虚函数来表示。
  34、Java支持用interface定义一个类为接口类,接口类里只能存在抽象方法,并用implements来实现这个接口类,而C++不提供这个机制。
  35、Java的多重继承只支持从一个抽象基类或具体基类加多个接口基类派生,或者通过多个抽象的内部类来派生,而C++支持从任意数量抽象基类或具体基类派生。
  36、Java拥有类似闭包功能的内部类,能够访问外部类的成员,而C++的嵌套类不支持这个机制。
  37、Java容器有公共基类collection,如果容器如果没有指定类型,那么里面保存的对象默认都是Object类型,而C++容器没有这些特性。
  38、Java的异常机制支持finally关键字,能够保证不论异常是否被匹配上都会执行finally关键字的代码,而C++不提供这个机制。
  39、Java标准库支持正则表达式,而C++不提供这个机制。
  40、Java支持反射机制,其区别于RTTI的是不需要在编译时确定类的类型信息,而是在运行时才确定类的类型信息,通过Class类可以获取类名、成员变量、方法和创建类对象等,而C++只支持RTTI机制。
  41、Java泛型里基本类型不能作为泛型参数,需要用到包装类型,比如int类型要包装成Interger类型,原因是泛型对象被擦除成Object类型了,而Object类型不能存储int类型只能存储Interger类型,C++没有这个问题。
  42、Java泛型在运行期,无法获取泛型参数的类型信息,在编译期做完类型一致性检查后,对象的类型信息就被擦除了,被转换成Object类型,运行期不能创建这种参数类型的对象,且只能调用Object或不带泛型参数类型对象所拥有的方法,一个补偿的办法是为泛型增加边界,泛型只会擦除到它的第一个边界,通过设定边界就能够调用这个边界类型所拥有的方法,而C++模板没有这个问题。
  43、Java泛型支持通配符机制,<?extends T>表示某种从类型T派生的类型,<? super T>表示某种类型T的基类型,<?>表示非Object的某种类型,而C++不支持这个特性。
  44、Java为数组操作提供Arrays类,包含一些静态函数,而C++通过C库来完成一些操作,但没有Java的Arrays类丰富强大。
  45、Java容器支持可选操作,某个类型的对象可以不支持这些接口,如果对这种对象调用这个接口就会抛出UnsupportedOperationException异常,这种动态语言特性C++不支持。
  46、Java的标准输入输出对象是System.in/System.out,而C++是cin/cout。
  47、Java中的enum类型比较像类,可以有方法,除了不能继承,而C++的enum不提供这个机制。
  48、Java支持注解机制,可以在代码中嵌入一定格式的元数据,而C++不提供这个机制。
  49、Java的线程库提供Thread.yield()方法,能够主动让出线程的执行权,而C++不支持这个特性。
  50、Java语言支持内置的synchronized关键字来标记一个方法或语句块受到锁的保护,并且一个对象的所有synchronized方法或一个类的所有静态synchronized方法共享同一个锁,而C++不提供这个机制。
  51、Java的Object.wait()会暂停当前线程进入睡眠状态,同时会释放持有的锁,当另一个进程调用Object.notify()后,睡眠线程会重新持有锁,然后被唤醒继续执行,而C++在调用操作系统的同类函数时,是不能在持有锁的时候睡眠的,因为睡眠不会释放锁。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号