数组和字符串

Java语言中,数组时一种最简单的复合数据类型,通过数组名加下标来使用数组中的数据。字符串在程序设计中使用非常频繁,Java使用java.lang包中的String类或StringBuffer类来创建一个字符串变量,因此字符串变量是类类型变量,是一个对象。

                                                                       Java中的数组

       数组是一种用来分组管理数据的简单且功能强大的语言结构。借助数组可以使用一个变量名,存储多个可独立访问的值。数组实际是一个值列表,每个值存放数组中的一个特定的并且编了号的位置。Java的数组,下标(索引)从0开始。

       数组可以是一维或多维的,支持“矩阵”数组也支持“不规则”数组。数组是引用类型,所以声明一个数组变量只是为此数组的引用设置了空间。数组实例的创建时通过数组初始化程序和数组创建表达式。一维数组是最普通的类型,实际编程中二维数组的使用也比较普遍。在实际的编程中,使用数组可以避免使用一些复杂的难于掌握的数据结构,让程序代码简单明了,使程序员编写代码更加容易。

一维数组

       数组时相同类型的数据按顺序组成的一种复合数据类型,数组中的每个元素都具有相同的数组名,元素是根据数组的下标来确定的。数组有一维数组和多维数组。使用数组之前要先进行声明,就像使用变量一样。

        一维数组是指一个线性的数据序列,例如:a[0],a[1]...a[x]。

        1.数组声明

        数组在使用之前必须首先声明。数组的声明涉及数组的名称、数组包含的元素和数据类型。声明的格式有如下两种:

         格式1:

    <span style="font-size:18px;"> 数组元素类型 数组名称[];</span>
          格式2:
<span style="font-size:18px;">     数组元素类型[] 数组名称</span>
         例如·:
<span style="font-size:18px;">     byte score[];
     int []number;</span>
         数组score中的元素类型是byte,数组number中的元素类型是int。

         当然,数组元素类型不仅仅是java中的基本数据类型,还可以是引用类型。假设有一个定义的类Student,那么可以将数组元素类型声明为Student。例如:

   <span style="font-size:18px;">  Student mystudent[];</span>
        2.创建数组

        仅仅被声明的数组是不能使用的,因为此时数组并没有被系统分配内存空间。可以看到,在声明数组时,数组的元素并没有确定,即[]是空的,也就是数组的长度还没有确定,当然系统无法对它分配空间,因此,声明之后,还必须为数组分配内存空间和初始化。格式如下:

     <span style="font-size:18px;">score =new byte [10];</span>
注意:
<span style="font-size:18px;">     数组的声明和创建可以一起完成,格式如下:
     数组元素类型 数组名称 []=new 数组元素类型[元素个数];
     例如:
     byte score[]=new byte [10];</span>
     3.数组元素的赋值

       一维数组可以通过下标来对数组进行赋值。需要提醒的是,下标是从0开始的,上例中的数组元素为score[0],score[1]…score[9]。Java中不允许数组越界,即不能超出下标范围,否则将发生异常。例如:

    <span style="font-size:18px;">score[0]=23;//正常赋值
    score[10]=13;//越界出现异常</span>
       4.数组的使用

       前面提到要使用数组时,首先要声明数组,然后创建再赋值,就可以使用数组了,在实际编程中,有时要根据需要往往对上述三个过程进行简单的处理。例如:

<span style="font-size:18px;">     byte score[]={1,2,3,4,5,6,7,8,9,10};</span>

        此条语句相当于:

        byte score[]=new byte [10];

        然后对每一个元素赋值,例如:

        score[0]=1,score[1]=2,……score[9]=10;

二维数组

      二维数组是具有两个下标的数组,可以用来表示如行列式、矩阵和二维表等。使用二维数组和一维数组一样,要先声明,声明格式和一维数组几乎是一样的,不同的是它有两个下标。格式如下:

      格式1:

   数组元素类型 数组名称[][];
      格式2:
   数组元素类型[][] 数组名称;
      二维数组的创建和一维数组是一样的。

说明:

        二维数组有两个下标:行下标和列下标。数组名后的第一个方括号[]中的整数值是行下标,第二个方括号[]中的整数值是列下标。通过指定行下标和列下标可以访问数组元素,进而可以遍历二维数组的每一个元素。例如:b[0][0]表示访问数组b第1行和第1列的元素值,b[0][1]表示访问第1行第2列的元素值。
        多维数组

      数组可以是一维数组、二维数组、三维数组,甚至是更高维的数组。二维数组可以形象的表示一个表,三维数组可以表示一个立方体。实际上,在面向对象编程中,很少使用二维以上的数组。这里举一个三维数组的例子。例如某个宾馆有8层楼,每层楼的客房数量不相等,每个房间中实际住宿的客人的数量可能是1~3之间的值。如果要存储客人与所入住的房间的关系,就可以使用三维数组。第一个下标表示所在楼层,第二个下标表示所在房间号,第三个下标表示同一个房间中客人的编号。

       Arrays数组工具类的用法

       除了通过下标访问数组元素外,更多的时候,还需要对数组进行其他操作,例如,对数组元素进行排序,遍历整个数组等。JDK1.2开始,java.util包下就有一个Arrays的类提供的sort方法,此方法提供了大量的重载形式,下面是对整型数组排序的声明:

         public static void sort(int []a)

         public static void sort(int []a,int fromIndex,int toIndex)

         排序的sort方法,是静态方法,即可以通过“类名.静态方法名”的语法格式进行调用。

         java.util.Arrays的一些常用方法包括:

         equals();比较两个数组是否相等,两个数组的元素数目相同,并且对于位置

         fill();向数组中填充数据。

         sort();把数组中的元素按照升序排列。

         binarySearch();按照二叉查找算法,查找数组中的值与给定数据相同的元素。在调用此方法前,必须保证数组中的元素已经按照升序排列。

        toString();返回数组中所以元素信息的字符串。

import java.util.*;
public class _a
{
	public static void main(String[] args)
	{
		int a[]={1,2,3,4,5};
		int b[]={1,2,3,4,5};
		System.out.println(Arrays.equals(a,b));
	}
}
		
注意:

java.util.Arrays类的方法都提供了重载的形式,以equal为例:
public static boolean equals(boolean[] a,boolean[] a2)
public static boolean equals(char []a,char[] a2)
public static boolean euqls(byte[] a,byte[] a2)	
public static boolean euqls(short[] a,short[] a2)
public static boolean euqls(int[] a,int[] a2)
public static boolean euqls(long[] a,long[] a2)
public static boolean euqls(float[] a,float[] a2)
public static boolean euqls(double[] a,double[] a2)
下面是一个代码片段,对一个整形数组进行排序,然后打印出排序后的数组元素:

int iArr[]={213,1251057,1107,610,2008};
java.util.Arrays.sort(iArr);
for(int i=0;i<iArr.length;i++)
   System.out.print(iArr[i]+" ");
上述代码片段执行后,结果如下:
213 610 1107 2008 1251057



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值