Java 是面向对象程序设计语言,而c语言是面向过程的语言。因为这个不同,Java会更加简洁方便。Java面向对象的特质让他很适合进行互联网产业的软件开发。
对于不同的平台来说,Java只要进行一次编译,就能在不同的平台上面运行,c语言在window系统上面编译生成的文件只能在window上运行,而想要在Linux系统下运行,就必须重新编译。而Java有自己的一套虚拟机体制,Java编译完成之后,会生成class文件,然后将生成的文件移到不同的平台时,Java虚拟机会帮助我们将class文件翻译成计算机所能识别的信息,然后可以在不同平台运行。Java相对于c语言相当于自己自带了一个翻译系统,能翻译成不同的语言以便他人理解,这也体现了Java的便利性。
Java与C 有很多相似之处,例如词法、表达式语句、运算符等。但Java更简洁,没有C中冗余以及容易引起异常的功能成分,增加了多线程、异常处理、网络编程等方面的支持功能。
c和Java有很多相似的关键字,但也存在不同。
Java中,abstract,assert,boolean,class,extends,Final,import,New,package,private,public等关键字是独有的。而c中的struct和typedef关键字java中没有。
因为Java中没有结构体类型,在C中声明结构变量时编译器会为其分配内存空间,而Java中用new来分配空间;C语言能够允许不完整的初始化以及生成结构体这样的可嵌套结构,但java不允许。typedef在c中为一个类型创造名字,而在Java中也同样没有相应的机制。
Java的数据类型转换也有较大不同。Java 语言属于强类型语言,为了保障了他的安全性和健壮性。Java中所有的数值传递都会进行类型兼容性的检查,任何不匹配的都会产生编译错误。
比如 C中表示真/假的变量一直是由int 类型来表示的。Java就不允许进行这样的操作,不能进行布尔型和算数型的转换。
建立数组两种语言也有不同。
C语言数组一般在定义时指定大小,并分配内存;在Java 中,数组定义时可以不指定数组的大小,同时也不为其分配内存空间,而是用new 创建,数组所占用的空间由Java的来及收集器自动地回收。
C语言的goto和神器——对内存地址进行直接操作的指针,在java中不存在。我觉得这是出于安全性的考虑。
可以说两者语言的差异决定了他们的使用领域。C语言偏向于底层,Java针对于互联网应用,都是必不可少的。