Java之数组

179 阅读3分钟

一、认识数组

1、数组的定义

   数组是由同类型的数据元素构成的一种数据结构,是对象。

2、数组的特点

  • 数组本身是引用数据类型,但数组中的元素可以是基本数据类型,也可以是引用类型。
  • 创建数组对象会在内存中开辟一整块连续的空间,占据空间的大小取决于数组的长度和数组中元素的类型。
  • 数组中的元素在内存中依次紧密排列,是有序的。
  • 数组一旦初始化完成,其长度就是确定的,数组长度一旦确定就不能被改变。
  • 可通过数组名和数组元素下标引用数组中的元素。

二、一维数组

1、一维数组的声明

语法格式如下:

Type a[];

或者

Type[] a;

 Type 为数组类型,arrayName 为数组名,可为任意的Java合法标识符。

2、一维数组的创建

   用关键字new创建数组,可指定数组类型和数组元素的个数。
例如:

int[] a=new int[5];

或者(声明与创建分开)

int[] a;      //声明数组

a=new int[5]; //创建数组

也可同时创建多个数组

String[] s1=new String[3],s2=new String[5],s3=new String[4];

3、一维数组元素的初始化

数据类型默认初始值
基本类型0
布尔类型false 
 引用类型  null 

静态初始化 程序员决定数组元素的初始值,系统决定长度。

String[] names = new String[]{"张三","李四","王五"};  
String[] books = {"红楼梦","西游记","水浒传"};  

动态初始化 程序员只决定数组元素的长度,系统分配元素初始值(通常为null,0等)。

int[] myArray = new int[5];  

4、一维数组的引用

  • 数组下标必须是int、short、byte或char类型中的一种

  • 从0开始计数

  • 元素个数为数组长度(length),元素下标最大值为length-1

实例

public class Main  
 {  
   public static void main(String []args)   
   {  
      String[] islands=new String[4];  
  
      islands[0]="Bermuda";  
      islands[1]="Fiji";  
      islands[2]="Azores";  
      islands[3]="Cozumel";  
  
      int[] index=new int[4];  
  
      index[0]=1;  
      index[1]=3;  
      index[2]=0;  
      index[3]=2;  
  
      int y=0;  
      int ref;  
  
      while(y<4)  
      {  
        ref=index[y];  
        y=y+1;  
        System.out.print("island=");  
        System.out.println(islands[ref]);  
      }  
   }  
}  

运行结果如下:

island=Fiji 
island=Cozumel
island=Bermuda 
island=Azores

三、多维数组

   多维数组可看作数组的数组,即高维数组的每一个元素为一个低维数组,多维数组的声明、初始化和引用与一维数组相似。

以二维数组为例:

1.二维数组的声明

语法格式如下:

Type a[][];

或者

Type[][] a;

2、二维数组的创建

a=new Type[length1][length1]

 length1表示行数,length2表示列数

另外,Java多维数组的每一维的长度可以不相同 格式如下:

Type a[][];

a=new Type[length1][]; //指定数组的行数

a[0]=new Type[length20];//为0行创建length20列

a[1]=new Type[length21];//为1行创建length21列

3、二维数组的初始化

静态初始化

int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};

动态初始化 image.png

4、二维数组的引用

语法格式如下:

arreyName[arreyIndex1][arreyIndex2]

1、数组下标必须是int、short、byte或char类型中的一种
2、从0开始计数
3、arreyName.length可得二维数组的行数, arreyName[i].length可得第i行的列数。

实例 题目要求:打印杨辉三角(行数可用键盘录入) 例如:

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10 5  1

代码如下:

public class Main  
 {  
   public static void main(String []args)
   {
       Scanner sc=new Scanner(System.in);
       System.out.println("请输入一个数据");  
       int n=sc.nextInt();
       
       //定义二维数组
       int[][] a=new int[n][n];
       //给任何一行的第一列和最后一列赋值为1
       for(int x=2;x<a.length;x++)
       {
           for(int y=1;y<=x-1;y++)
           {
               a[x][y]=a[x-1][y-1]+a[x-1][y];
           }
       }
       for(int x=0;x<a.length;x++)
       {
           for(int y=0;y<a[x].length;y++)
           {
               System.out.print(a[x][y]+"\t");
           }
           System.out.println();
       }   
       for(int x=0;x<a.length;x++)
       {
           for(int y=0;y<=x;y++)
           {
               System.out.print(a[x][y]+"\t");
           }
           System.out.println();
       }
    }
}