Java与C语言有什么区别

两者有什么关系和区别?参加竞赛的应该选哪个?

从概念上看,C语言是一门面向过程、抽象化的通用程序设计语言;Java是一门面向对象编程语言,而Java语言是从C语言衍生而来,它吸收了C++语言的各种优点,并且摒弃了C++里难以理解的多继承、指针等概念。从概念可以看出C语言相当于Java的基础语言,学完C再学Java会更容易。
从应用领域上,C语言和Java的应用领域几乎没有重合。因为随着这几年Java、web、PHP等语言的出现,它们凭借比C更简洁的、更安全的性能快速崛起,抢占了大量的市场。目前因为Java有完善的框架,在多线程、高并发方面有着较好的稳定性,所以Java主要应用于企业级应用开发、大型系统开发等领域。而C语言由于编程的复杂性,退守到了系统级别语言,而且因为想要系统级软件可以发挥出机器的功能,它的底层核心就需要用C/C++来编写,所以C语言主要应用于软件工业。

C语言
C语言可以作为面向过程语言的一种代表,算是一种比较纯正的面向过程语言了。而面向过程的语言也称为结构化程序设计语言,是高级语言的一种。
Java
Java 是由 C++发展而来的,保留了 C++ 的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司曾对多种程序设计语言进行分析研究,取其精华去其糟粕,最终推出了 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++ 中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

详细可参考

Java面向对象
C面向过程
算法竞赛C++比较受欢迎