论文部分内容阅读
摘要:通过理论有与实例的比较,对目前比较流行的两种面向对象的编程语言C 与Java从7个方面作一比较,希望为程序的设计与教学提供帮助与选择。
关键词:C ;JAVA;程序设计;编程语言
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)21-30453-02
Comparison of the Object-oriented Procedure Counts Platform C and JAVA
GAO Jian-zhou
(Haifeng Subsidiary company of Chinese Telecommunication Limited Liability Company,Shanwei 516400,China)
Abstract: This article made a comparison of two of the popular object-oriented programming language-C and Java from 7 aspects compares with the theory and experience.And we hoped that it can provide the help and choice for the procedure design and the teaching.
Key words: C ; JAVA; Programming; Programming language
计算机语言,自20世纪80年代到90年代中期,一直以C、PASCAL、FORTRAN 为主,其中以C语言最为流行,在面向对象编程的思想被广泛接受和实现后,C 和Java逐渐成为计算机语言的主宰。C 语言在兼容原有最流行的C语言的基础上,加入了面向对象的有关内容和规则。由于它的很多语法规则与c语言相近,所以很容易为广大的C程序员所接受;同时C 所具有的面向对象功能简化了应用软件的开发、设计和维护,为开发大型软件提供了很大的方便。但是,由于本身是面向过程语言的补充,C 也有很大的不足。Java是在C 之后出现的,从语法特征上看,Java主要源自于C ,但在许多方面进行了改革,使得熟悉C 的程序员能很方便地进行编程。同时为了实现其简洁、健壮、安全等特点,也摒弃了C 中许多不合理的内容。本文将从多个方面将Java与c 加以比较,希望为程序的设计与教学提供帮助与选择。
1 一般特点比较
C语言设计灵活,功能强大,但不支持面向对象程序设计,为了让编程人员在使用面向对象的概念时保持对C 语言的向后兼容性,Bjarne stroustrop在C语言上引进了“类” 的概念,称作C 语言,C 既兼容以前C语言的过程程序设计,又支持面向对象的程序设计,其主要特点是:允许单继承和多继承,支持数据封装;允许函数名和运算符重载,支持动态联编。Java由Sun公司开发,是一种纯面向对象语言,运行在网络浏览器上,Netscape和IE浏览器都迅速地把这种技术整合其中,Java传播得极快。其主要特点是在JVM上运行,语言简单,多线程,分布式,解释执行,可在不同的操作系统层面移植,能够在大型机上运行。
2 数据转换
在C 语言中,支持数据类型的自动转换,自动数据类型转换使得两个数据类型互不兼容的变量可以相互赋值,不需给出显式说明,这有时会导致一些问题,最常见的是精度损失。例如,如果把一个带符号的32位整数赋给一个无符号整数,则所有的结果均为正数,不安全因素大大增加。C 语言可以通过指针进行任意的类型转换,而Java语言不支持这种自动类型转换方式,要求编程人员显式实现数据类型转换,系统要对对象的处理进行严格的相容性检查,防止不安全的转换。在C 语言中,不同的平台上,编译器对简单的数据类型如int、float等分别分配不同的字节数。例如:int在IBMPC上为l6位,在VAX-11上就有32位,导致了代码数据的不可移植。在Java中,对数据类型的位数分配总是固定的,而不管是在任何的计算机平台上,因此就保证了Java数据的平台无关性和可移植性。
3 数组
尽管C 数组与Java数组表面上类似,但与C 相比,数组在Java中用类来实现,而且对于下标进行检查,每个Java数组都有一个只读的成员,通过它可知道数组有多大。而且一旦超过数组边界,运行期检查会自动丢弃一个异常。Java这种对于数组下标进行检查的机制,很好地解决了数组越界这一C 中不作检查的错误,确保Java程序不能破坏不属于它的内存空间。所有的动态内存申请将都通过new运算符来完成,包括数组内存空间的申请。所有数组都是在内存“堆”里创建的,我们可将一个数组分配给另一个。数组标识符属于第一级对象,它的所有方法通常都适用于其他所有对象。和C 完全不同的是,Java数组类型定义不同时产生数组所需要的内存空间 而必须通过new算符指定数组的维长并分配内存后,才可以使用数组元素。而且,在Java中得到的不是指针,而是引用。程序只能通过引用来访问数组元素或者对象 不能像指针那样通过修改引用的值来指向另外一块内存区域,减少了出错的机会,也可以使内存动态地由系统进行回收。
4 参数传递
C 中的参数传递
#include<iostreara.h>
typedef int*pInt;
void change1(int x)(x=1;)
void change2(int’x)(* x=1;)
void chaege3(plnt x)(* x=1;)
void change4(int &x) (x=1;)
main(){
int i;j;k;l; pInt pk; i=j=k=l=();pk=
关键词:C ;JAVA;程序设计;编程语言
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)21-30453-02
Comparison of the Object-oriented Procedure Counts Platform C and JAVA
GAO Jian-zhou
(Haifeng Subsidiary company of Chinese Telecommunication Limited Liability Company,Shanwei 516400,China)
Abstract: This article made a comparison of two of the popular object-oriented programming language-C and Java from 7 aspects compares with the theory and experience.And we hoped that it can provide the help and choice for the procedure design and the teaching.
Key words: C ; JAVA; Programming; Programming language
计算机语言,自20世纪80年代到90年代中期,一直以C、PASCAL、FORTRAN 为主,其中以C语言最为流行,在面向对象编程的思想被广泛接受和实现后,C 和Java逐渐成为计算机语言的主宰。C 语言在兼容原有最流行的C语言的基础上,加入了面向对象的有关内容和规则。由于它的很多语法规则与c语言相近,所以很容易为广大的C程序员所接受;同时C 所具有的面向对象功能简化了应用软件的开发、设计和维护,为开发大型软件提供了很大的方便。但是,由于本身是面向过程语言的补充,C 也有很大的不足。Java是在C 之后出现的,从语法特征上看,Java主要源自于C ,但在许多方面进行了改革,使得熟悉C 的程序员能很方便地进行编程。同时为了实现其简洁、健壮、安全等特点,也摒弃了C 中许多不合理的内容。本文将从多个方面将Java与c 加以比较,希望为程序的设计与教学提供帮助与选择。
1 一般特点比较
C语言设计灵活,功能强大,但不支持面向对象程序设计,为了让编程人员在使用面向对象的概念时保持对C 语言的向后兼容性,Bjarne stroustrop在C语言上引进了“类” 的概念,称作C 语言,C 既兼容以前C语言的过程程序设计,又支持面向对象的程序设计,其主要特点是:允许单继承和多继承,支持数据封装;允许函数名和运算符重载,支持动态联编。Java由Sun公司开发,是一种纯面向对象语言,运行在网络浏览器上,Netscape和IE浏览器都迅速地把这种技术整合其中,Java传播得极快。其主要特点是在JVM上运行,语言简单,多线程,分布式,解释执行,可在不同的操作系统层面移植,能够在大型机上运行。
2 数据转换
在C 语言中,支持数据类型的自动转换,自动数据类型转换使得两个数据类型互不兼容的变量可以相互赋值,不需给出显式说明,这有时会导致一些问题,最常见的是精度损失。例如,如果把一个带符号的32位整数赋给一个无符号整数,则所有的结果均为正数,不安全因素大大增加。C 语言可以通过指针进行任意的类型转换,而Java语言不支持这种自动类型转换方式,要求编程人员显式实现数据类型转换,系统要对对象的处理进行严格的相容性检查,防止不安全的转换。在C 语言中,不同的平台上,编译器对简单的数据类型如int、float等分别分配不同的字节数。例如:int在IBMPC上为l6位,在VAX-11上就有32位,导致了代码数据的不可移植。在Java中,对数据类型的位数分配总是固定的,而不管是在任何的计算机平台上,因此就保证了Java数据的平台无关性和可移植性。
3 数组
尽管C 数组与Java数组表面上类似,但与C 相比,数组在Java中用类来实现,而且对于下标进行检查,每个Java数组都有一个只读的成员,通过它可知道数组有多大。而且一旦超过数组边界,运行期检查会自动丢弃一个异常。Java这种对于数组下标进行检查的机制,很好地解决了数组越界这一C 中不作检查的错误,确保Java程序不能破坏不属于它的内存空间。所有的动态内存申请将都通过new运算符来完成,包括数组内存空间的申请。所有数组都是在内存“堆”里创建的,我们可将一个数组分配给另一个。数组标识符属于第一级对象,它的所有方法通常都适用于其他所有对象。和C 完全不同的是,Java数组类型定义不同时产生数组所需要的内存空间 而必须通过new算符指定数组的维长并分配内存后,才可以使用数组元素。而且,在Java中得到的不是指针,而是引用。程序只能通过引用来访问数组元素或者对象 不能像指针那样通过修改引用的值来指向另外一块内存区域,减少了出错的机会,也可以使内存动态地由系统进行回收。
4 参数传递
C 中的参数传递
#include<iostreara.h>
typedef int*pInt;
void change1(int x)(x=1;)
void change2(int’x)(* x=1;)
void chaege3(plnt x)(* x=1;)
void change4(int &x) (x=1;)
main(){
int i;j;k;l; pInt pk; i=j=k=l=();pk=