- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java中数组与C语言中数组的比较.doc.doc
Java中数组与C语言中数组的比较
李舒亮1 刘有珠2
(1.新余高等专科学校 计算机系 江西省 新余 338000)
(2.南昌工程学院 计算机系 江西省 南昌 330000)
摘要:从多方面比较数组在java与C语言中的区别,根椐它们在内存中的表现形式,找出其差别的根本原因。
关键字:数组、对象、引用变量、区别、java 、C
数组是高级程序设计语言中常见的数据类型,它是一组有序数据的集合,数组中的每个元素都具有相同的数据类型。用数组名和下标来标识数组中的每个元素。
使用数组可以为处理成批的、有内在联系的数据提供便利,使用数组也使得算法的实现更加精炼。
在java和C语言中都提供了数组这种数据类型,但它们有很大的区别,在C语言中数组是一种构造类型,而在java中数组是一种引用类型。两者在内存中的表现形式是完全不同的。由此而引出的对数组的操作也有很大的区别。下面我们就来讨论这个问题。
1、数组的定义上的不同:
以一维数组的定义为例来说明:
C语言中的定义格式为:type arrayName[常量表达式];
其中类型type可以为 C中任意的数据类型,数组名 arrayName为一个合法的标识符,常量表达式指明数组的大小,在C语言中数组的大小不允许作动态的定义。
例如:int a[5];
声明一个整型数组a,长度为5,包含a[0]、a[1]、a[2]、a[3]、a[4]这5个整型元素,在内存中为这个数组分配一片连续的内存空间存放这5个元素,数组名可以表示数组的首地址,但并没开创一个内存空间来存放数组名。它在内存中的表现形式为:
a[0]a[1]a[2]a[3]a[4]
Java中的定义格式为:type arrayName[];
或 type[] arrayName;
其中类型type可以为 Java中任意的数据类 ,数组名 arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量。
例如:int a[];
声明一个整型数组,数组名表示一个引用地址变量,与C不同,Java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素个数,,即数组长度,而且对于如上定义的一个数组是不能访问它的任何元素的。 我们必须用new运算符为它分配内存空间,其格式如下:
arrayName = new type[arraySize];
其中arraySize指明数组的长度。 如 :
a = new int[5];
为一个整型数组分配5个 int型整数所占据的内存空间 ,这两部分可以合在一起,格式如下:
type arrayName = new type [arraySize];
例 如 :
int a= new int[5];
它在内存中的表现形式为:
0X112H
a
a[0]a[1]a[2]a[3]a[4]
由上图可以看出,数组名有一个单独的内存空间,存放数组对象的引用地址。这与C语言是不同的。
2、数组的初始化
可以结合FOR语句给数组元素赋初值,也可以在定义数组的同时进行初始化。数组元素的引用形式为:数组名[下标],这方面java和C没有什么区别。
与C、 C++中 不 同,Java对数组元素要进行越界检查以确保安全性。同时,对于每个数组都有一个属性length指 明 它 的 长 度。
3、数组操作的不同
数组元素同普通变量一样,可以进行各种操作,如被赋值、被打印、参加表达式计算等。在JAVA中数组的复制操作和C语言有很大不同。例如:
public class ArrayC {
public static void main(String[] args) {
int a[],b[],i,j;
a=new int[3];
b=new int [5];
System.out.println(a.length=+a.length);
for(i=0;ia.length;i++)
{ a[i]=i;
System.out.print(a[i]+ );} //打印a数组
System.out.println(); //换行
System.out.println(数组复制之前:);
System.out.println(b.length=+b.length);
for(j=0;jb.length;j++)
{
文档评论(0)