c和java语言之间的差异(摘录)

原创 2004年08月10日 19:16:00
java没有预处理器
    java没有包括一个预处理器,并且没有定义任何类似的#define、#include以及#ifdef伪指令。常量定义在java中被使用static final字段取代。在java中没有宏定义,但是高级编译器技术和内联已经使它们不那么重要。java不要求使用#include伪指令,因为java没有头文件。java类文件包括api和类执行过程,而编译器在必要的时候从类文件中读取信息。java缺乏任何形式的条件编译,但是她的穿越平台的可移植性意味着这个特点并非必要。
没有全局变量
   java定义了一个非常整齐的名字空间。包容了类,类包括字段和方法,而方法包括局部变量。但是在java 中没有全局变量,因此没有可能在这些变量之间发生名字冲突
明确定义的基本数据类型大小
   在java中所有的基本数据类型都有定义明确的大小。在c中,short、int以及long数据类型的大小都依赖与它们的执行平台,这一个特点明显阻碍了他们的可移植性
没有指针
  java类和数组都是引用类型,而对于对象和数组的引用类似于c中的指针,然而,和c中指针不同,在jaca中的引用是完全不透明的,没有办法将一个引用转换为一个基本数据类型,而且一个引用不能被增加或者减少。java中没有类似&的地址运算符,类似*或者->的引用运算符,或者sizeof运算符,指针是造成程序错误的一个重要原因,消除它们将简化这种语言,并且使java程序更加强壮和安全
无用存储单元收集
  java虚拟机执行无用存储单元收集,从而使java程序员不必明确地管理所有对象和数组使用的内存,这个特点消除了另外一个全体类别的常见程序错误,并且几乎消除了java程序中的内存泄露.
无goto语句
  java不支持goto语句,除非定义在明确的环境中,使用goto语句通常被视为拙劣的程序设计习惯,java添加了异常处理和标记语句break和continue来代替c语言提供的流控制语句.它们极好地代替了goto语句
随处可以声明变量
  c要求局部变量声明必须放在方法或程序块的开始,但是java则允许声明随处出现.尽管如此,许多程序员还是喜欢把所有的变量声明集合起来,放在方法的开头.
向前引用
  java编译器比c编译器聪明,因为它允许在定义方法之前就调用它,这就不必在一个程序文件中定义函数之前先在一个头文件中声明它们了.c就有这样的要求.
方法重载
  java 程序可以使用同一个名字定义多个方法,条件是这些方法的参数列表不同
无struct和union类型
  java 不支持c的类型struct和union,但是可以将java的class看作是一种增强的struct
无枚举类型
  c的关键字enum是用来定义有指定值的固定集合构成的类型的,java不支持该关键字,对于像java这样的强类型语言来说,这是令人惊异的现象,但是使用对象常量可以模拟这一特性
无位字段
  c可以指定struct结构的各个字段所占用的为数,java不支持这一(不常用的)功能.
无typedef
  c用关键字typedef可以为类型定义别名,java不支持这一关键字,因为java没有指针,比c的命名模式更加简单一致,所以typedef的许多常用用法在java中都是不必要的
无方法指针
  c可以将一个函数的地址存储在一个变量中,并把这个函数指针传递给其他的函数.对于java的方法,则不能这样处理,但是传递实现某个特殊接口的对象通常可以达到相似的效果,而且java方法可以由java.lang.reflect.Method对象表示和调用
无变量长度参数列表
  java不允许定义参数数目可变的方法,诸如c的printf().虽然通过方法重载可以模拟c的这种函数,但是没有一种通用的方法可以替代这一特性

Java和C/C++的差异总结

总结一下Java的小知识,只是想稍微提醒一下自己这些基础的东西,放在这里,随时可以阅览和添加一下,以免走错了方向。 1.面向对象程序设计 面向对象程序设计语言可以直观的反映客观世界的真实表...
  • Frimish
  • Frimish
  • 2015-12-08 15:17:10
  • 1347

java语言和C语言的区别

简单的说就是两种不同的语言.但是它们之间既有联系又有区别
  • wenzhi20102321
  • wenzhi20102321
  • 2016-08-16 09:04:30
  • 4137

C中一些小概念(摘抄自C陷阱与缺陷)

C语言中只有一维数组;对于一个数组,我们只能够做两件事:确定该数组的大小,以及获得指向该数组下标为0的元素的指针;任何一个数组下标运算都等同于一个对应的指针运算;如果我们使用数组名作为参数,那个数组名...
  • glose
  • glose
  • 2010-12-17 19:14:00
  • 336

我读经典(2):《C陷阱与缺陷》学习笔记

最近,在工作之余,我抽时间阅读了一下经典书籍《C陷阱与缺陷》。本书以作者的实际C语言工作为背景,详细地介绍了用C语言进行编程工作过程中需要注意的一些细节。本书篇幅不多,但却将C语言程序员普遍遇到过的问...
  • zhouzxi
  • zhouzxi
  • 2014-01-27 15:09:41
  • 2218

c陷阱和缺陷摘录

  • 2018年01月12日 11:11
  • 7KB
  • 下载

C语言的标准(K&R C,ANSI C,C89,C90,C99)

2012-04-05 12:42 0、C语言,1973年由Dennis M. Ritchie设计和实现。 1、K&R C。1978年由Kernighan和Ritchie合写的书《The C Pro...
  • gaojinshan
  • gaojinshan
  • 2012-08-13 13:00:45
  • 3122

不同浏览器之间的一些差异整理(持续更新ing)

火狐浏览器中,非float的div前面有同一父级的float的div,此div若有背景图,要使用clear:both,才能显示背景图,而IE6.0中不用使用clear:both 在[text-d...
  • duandianyiwai
  • duandianyiwai
  • 2016-08-03 12:15:04
  • 1011

《标准C与经典C的比较》pdf版

  • 2008年09月28日 19:09
  • 209KB
  • 下载

数据库之间的差异

1.运算符的差异不同数据库系统中字符串的拼接方式不同,主流数据库对字符串拼接的支持如下:1)MYSQLconcat:支持一个或多个参数,如concat('1','2','3')concat_ws:可以...
  • qq814965130
  • qq814965130
  • 2018-03-09 08:56:32
  • 47

C标准之间的差异

K&R C   说到k&r,就要说到经典的c教程。所谓的经典c就是指的k&r教程c,他们的第一版在1978年出版,里面介绍了已下一些c语言的特性: struct数据类型 long i...
  • qingyang_0
  • qingyang_0
  • 2012-10-05 21:11:13
  • 430
收藏助手
不良信息举报
您举报文章:c和java语言之间的差异(摘录)
举报原因:
原因补充:

(最多只允许输入30个字)