c语⾔数组和Java数组区别,Java中数组与C语⾔中数组的⽐
较.doc
Java中数组与C语⾔中数组的⽐较
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];
它在内存中的表现形式为:
a
a[0]a[1]a[2]a[3]a[4]
由上图可以看出,数组名有⼀个单独的内存空间,存放数组对象的引⽤地址。这与C语⾔是不同的。
2、数组的初始化
可以结合FOR语句给数组元素赋初值,也可以在定义数组的同时进⾏初始化。数组元素的引⽤形式为:数组名[下标],这⽅⾯java和C没有什么区别。
与C、 C++中 不 同,Java对数组元素要进⾏越界检查以确保安全性。同时,对于每个数组都有⼀个属性length指 明 它 的 长 度。
3、数组操作的不同java定义一维数组并赋值
数组元素同普通变量⼀样,可以进⾏各种操作,如被赋值、被打印、参加表达式计算等。在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;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;j
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论