一、认识数组
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}};
动态初始化
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();
}
}
}