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中数组的复制操作和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

{

  • 2
    点赞
  • 11
    收藏
  • 0
    评论
一:数组 1:一维数组:(JAVA数组类似于C指针形式数组)  定义:type var_name[]: 如 int a[]; float b[]; int month_days[];  使用:var_name=new type[size];如 a=new int[10]; month_days=new int[12];java专业用法。  也可以在定义时,直接赋值如:int a[]={1,2,3,4,5};(这一点C相同);   其它C语言数组概念相同,包括利用数组下标赋值、取值以及内存存储方式等。  C语言不同,数组也是类(对象),有许多方法可调用(如长度等) 二:多维数组(二维数组)  定义:int two[][]=new int[4][5];//类似于一维数组;  二维数组另几种定义方法: 1:int two[][]={{1,2,3,4},{0,0,0,0},{3,4,5,6}}三行四列二维数组C相同) 2:int two[][]=new int[4][]; two[0]=new int[5]; two[1]=new int[5]; two[2]=new int[5]; two[3]=new int[5]; 也可: two[0]=new int[1]; two[0]=new int[2]; two[0]=new int[3]; two[0]=new int[4]; 注意:数据也是对象: int n[]=new int[10]; int x=n.length; System.out.println("n数组长度: " +x);结果为10; 总结:数组相当于C语言指向数组指针, 数据初始化有二种形式工:定义是赋值,或初始化(NEW运算后)赋值二种形式。 数据也是对象。 数组copy; 如:int a[]=new int[10]; int b[]=new int[10]; for(int i=0;i<10;i++)a[i]=i; for(int i=0;i<10;i++)b[i]=a[i]; b=a; 介绍一个JAVA类:ArrayList类; java.util.ArrayList:动态数组; 主要方法:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值