Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135502
  • 博文数量: 16
  • 博客积分: 850
  • 博客等级: 上士
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-23 10:59
文章分类
文章存档

2012年(16)

分类: Java

2012-07-23 17:34:44

Java和C都是指令式语言(Imperative Language),不同的是Java有面向对象(OO)成分在里面,而C是完全面向过程的,C的高级版本C++、C#支持面向对象。

另外一个不同是,Java跨平台,既不同的操作系统都可以通过JVM来解释Java程序,而C、C++、C#则是与平台相关的,有些指令只在某些操作系统中才能执行。具体原因是,Java是解释型语言,所有代码都会翻译成统一的、与系统无关的bytecode,然后放到JVM上运行;而C是编译式语言,代码要先通过编译器转换成与系统相关的中间代码,然后才能运行。

再一个不同是,Java不支持系统调用,既无法与操作系统进行交互,这是由它跨平台的特点决定的,而C则可以调用系统中的指令,如fork()。这也就是为什么Java中只有线程(Thread)概念而没有进程(Process)概念,而C两者均有。

再者,Java无法对内存进行控制,而C则可以通过指针对内存进行人为分配。
还有一点,Java有Gabbage Collection机制,可以自动回收不再使用的空间,而C则要用free()函数释放空间。

总的来说,Java比较容易上手,学得快,但对于了解编程语言来说帮助不如C大。
当然Java和C之间的区别还有很多很多。
阅读(5869) | 评论(3) | 转发(0) |
0

上一篇:没有了

下一篇:软件工程师的心酸

给主人留下些什么吧!~~

Nicolejinpeng2012-07-24 19:54:48

leon_yu: C在内核里有很多面向对象的例子.....
谢谢您的关注!我对这些的理解确实有待提高!

leon_yu2012-07-24 17:47:18

sxcong: 很多结论有待探讨,比如"C是完全面向过程的",这个不准确,愿意的话,c可以做的一样面象对象。另外,跨平台的对比也不严谨。事实上,c最初就是做为跨平.....
C在内核里有很多面向对象的例子

sxcong2012-07-24 14:15:49

很多结论有待探讨,比如"C是完全面向过程的",这个不准确,愿意的话,c可以做的一样面象对象。另外,跨平台的对比也不严谨。事实上,c最初就是做为跨平台设计出来的。在c之前,需要针对cpu编程。java跨平台也很有争议,很多人的观点,java本身就自带了一个虚拟平台,不能说是跨平台。另外,Java支持系统调用的,比如 Runtime.getRuntime()。
还有,C#也不是c的高级版本,完全不是一回事。相反, C#和Java倒很象近亲,至少比c++,c近的多。
还是检查一下内容,重发吧,不严谨的地方太多。