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的这种函数,但是没有一种通用的方法可以替代这一特性

[算法]两种字符串匹配算法(索引法,KMP算法)对比,C语言实现

今天做了个一个简单的字符对比程序,功能是实现从A串删除包含B最多的字符的操作,比如A=“aaaaabbbbbbabababa” B=“aaccbaab”,应当删除“aab”的,不是aa,相信知道搜索引...
  • yctccg
  • yctccg
  • 2016年08月16日 10:38
  • 800

Java与C语言数组实现机理的一点对比

想看一下Java的数组实现机制是否与C语言一致,同时看看是不是被隐藏掉的指针功能实现的类似数组访问功能。Java中是不是还有什么类似简写这样的表示说明呢?写了两段简单的代码示意一下。 C语言代码: ...
  • grey_csdn
  • grey_csdn
  • 2017年03月12日 12:31
  • 205

线程间通信的三种方法

http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html   线程间通信的三种方法 多线程通信的方法主要有以下三种...
  • sunjianjun1981
  • sunjianjun1981
  • 2014年01月14日 15:09
  • 1533

C语言运算符摘录

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右   () 圆括号 (表达式)/函...
  • w1396037340
  • w1396037340
  • 2014年12月16日 09:14
  • 285

java与c语言之间的socket通信—c客户端java服务器端

写在前面的声明:程序例子均运行在ubuntu(是一个以桌面应用为主的Linux操作系统)上。当然你也可以把java运行在其它系统上,这里只是为了方便。 上一篇文章已经说明了关于socket的一些知识...
  • luohuaishao
  • luohuaishao
  • 2013年12月21日 15:36
  • 5023

C语言数据定义长度 16位、32位、64位

C语言编程需要注意的64位和32机器的区别   一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:...
  • u011392772
  • u011392772
  • 2015年09月22日 10:11
  • 7144

C语言实现两台电脑通过串口通信

用C语言实现在发送端控制台输入字符串并在接收端接收显示的功能。 /*********************server.c****************/  #include  #inc...
  • zgrjkflmkyc
  • zgrjkflmkyc
  • 2013年02月23日 13:01
  • 8478

Java基础知识与C语言的对比

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- DOS常用命令 1、dir:(directory) 2、md:(make directory...
  • u011486491
  • u011486491
  • 2015年05月06日 20:35
  • 444

C语言中的注释风格小结

C语言中常用的注释风格有两种,一种是通过如下模式进行一段代码的注释: /* comment*/ 另一种是单行注释符号: // comment        学生时代的注释我一般是选用后者,那时...
  • grey_csdn
  • grey_csdn
  • 2017年04月03日 22:18
  • 690

【C语言】输出1000年到2000年之间的闰年

题目要求 编写C语言程序.实现输出1000年——2000年之间的闰年. 算法分析 我们要想用C语言程序输出1000年——2000年之间的闰年,我们只需判断某个年份是否闰年,然后循环1000次就可以了....
  • qq_31828515
  • qq_31828515
  • 2016年07月24日 14:07
  • 2991
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c和java语言之间的差异(摘录)
举报原因:
原因补充:

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