动视暴雪|java和c/c++由什么区别?( 二 )



Java 和 C/C++ 的相似之处多于不同之处 , 有 C 基础的读者 , 学习 Java 会更容易 。 相较而言 , Java 的编程环境更为简单 。

在 C++ 中 , 假如你写同样一个程序 , 在 Java 里面会报错 , 而在 C++ 语言里面是不会报错的 。 为什么?因为 C/C++ 语言设计的思想是:你想怎么写程序就怎么写 , 只要你的这种写法错得不是很离谱 , 就认为你这么写有特殊的含义 , 可以通过 。 但 Java 不行:只要你这么写有歧义 , 或者说这样写不太好 , 那么它都会报错 。

比如 C++ 中你可以将一个浮点型数据赋给一个整型变量 , 编译时只会警告 , 因为会丢失精度 , 但是在 Java 中这样写就会报错 , 它在语法上就禁止你这样写 。 这就是不同的语言对同样一个问题有不同的理解和处理方式 。

由于 C++ 中大大小小的问题会导致不安全性 , 所以就在 C++ 的基础上 , 取其精华 , 去其糟粕 , 便形成了早期的 Java 语言 。 直到现在 , Java 又多了很多新的特性 , 比如说集合 , 反射 , 泛型 , Lambda 表达式等等 。 所以 , 正因为 C -> C++ -> Java 的发展历史 , 所以导致了 Java 在一定程度上继承了多数C语言的语法 , 但又有一定的改变 。

以下是我们整理的 Java 和 C/C++ 的 10 条不同之处 。

  1. C++ 支持指针 , 而 Java 没有指针的概念 。
  2. C++ 支持多继承 , 而 Java 不支持多重继承 , 但允许一个类实现多个接口 。
  3. Java 是完全面向对象的语言 , 并且还取消了 C/C++ 中的结构和联合 , 使编译程序更加简洁
  4. Java 自动进行无用内存回收操作 , 不再需要程序员进行手动删除 , 而 C++ 中必须由程序释放内存资源 , 这就增加了程序员的负担 。
  5. Java 不支持操作符重载 , 操作符重载则被认为是 C++ 的突出特征 。
  6. Java 允许预处理 , 但不支持预处理器功能 , 所以为了实现预处理 , 它提供了引入语句(import) , 但它与 C++ 预处理器的功能类似 。
  7. Java 不支持缺省参数函数 , 而 C++ 支持。
  8. C 和 C++ 不支持字符串变量 , 在 C 和 C++ 程序中使用“Null”终止符代表字符串的结束 。 在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的
  9. goto 语句是 C 和 C++ 的“遗物” , Java 不提供 goto 语句 , 虽然 Java 指定 goto 作为关键字 , 但不支持它的使用 , 这使程序更简洁易读 。
  10. 【动视暴雪|java和c/c++由什么区别?】Java 不支持 C++ 中的自动强制类型转换 , 如果需要 , 必须由程序显式进行强制类型转换 。