Java SE笔记(5)

Java SE 笔记

五、数组
1.数组概述

  • 具有相同数据类型的数据的集合
  • 可以存储基本类型的数据和引用类型的数据
  • 数组是在内存中分配的一连串的空间

2.数组声明

  • 数组的声明方式:type var[] 或 type[] var;
    例如:
       int a[];
       int[] a1;
       double b[];
       String []c;
  • Java语言中声明数组时不能指定其长度(数组中元素的数)
    例如:
       int a[5];   //非法
    在这里插入图片描述
    2.数组的初始化
  • 当定义数组赋值数据时,数组中根据数据类型存入相应的默认值
  • 可以在定义数组时就进行初始化值
    静态初始化:
    在这里插入图片描述
    动态初始化:
    在这里插入图片描述

数组元素的默认初始化

  • 数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。

例如:

int a[]= new int[5];
		System.out.println(a[3]);

0

数组元素的默认初始值
在这里插入图片描述
3.数组元素的使用

  • Java中使用关键字 new 创建数组对象
  • 定义并用运算符 new 为之分配空间后,才可以引用数组中的每个元素;
  • 数组元素的引用方式:数组名[数组元素下标]
    • 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
    • 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 - n-1;
    • 如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]
  • 每个数组都有一个属性 length 指明它的长度
  • 例如:a.length 指明数组 a 的长度(元素个数)

注意:如果获取的元素比分配的元素多,就会出现数组越界异常(ArrayIndexOutOfBoundsException)

4.数组的使用

  • 使用循环结构遍历数组,一般不适用for循环
  • 要素:变量从0开始,小于数组的长度
    在这里插入图片描述
  • 根据数组的长度不同去修改i的取值范围,可以使用数组中length属性,获得数组长度
for(int i=0;i<9;i++){
			for(int i=0;i<b.length;i++)
				System.out.println(b[i]);
		}
  • 使用循环语句对数组插入数据
    在这里插入图片描述
  • 定义10个长度的数组,用来存储身高数据,从控制台输入身高,打印数组
Scanner sc = new Scanner(System.in);
		int[] height = new int[10];
		for(int i=0;i<height.length;i++){
			System.out.println("请输入身高");
			height[i] = sc.nextInt();
		}
		for(int i=0;i<height.length;i++){
			System.out.print(height[i]+"、");
		}

请输入身高
162
请输入身高
170
请输入身高
175
请输入身高
172
请输入身高
160
请输入身高
165
请输入身高
163
请输入身高
167
请输入身高
159
请输入身高
180
162、170、175、172、160、165、163、167、159、180、

5.数组的操作
数组的复制排序

System.arraycopy(source,srcPos,dest,destPos,length)
  • 复制source数组中从下标srcPos开始的length个元素到自然目标数组dest,并从目标数组的下标数组的下标为destPos的位置开始存储

    • source:源数组
    • srcPos:源数组中的起始位置
    • dest:目标数组
    • destPos:目标数组中的起始位置
    • length:要复制的数组元素的个数
  • 对数组进行排序,复制和遍历

int[] array = {23,44,3,234,26,5,2,1,51,6,45,21,532,215,39};
		int[] newarray = Arrays.copyOf(array, array.length);
		Arrays.sort(array);
		for(int i=0;i<array.length;i++){
			System.out.print(array[i]+";");
		}
		System.out.println();
		for(int i=0;i<newarray.length;i++){
			System.out.print(newarray[i]+";");
		}

1;2;3;5;6;21;23;26;39;44;45;51;215;234;532;
23;44;3;234;26;5;2;1;51;6;45;21;532;215;39;

6.冒泡排序

  • 冒泡排序法是一种简单的排序算法
    • 它重复地走访过要排序的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数组的工作是重复地进行直到没有再需要交换,也就是说该数组已经排序完成。

在这里插入图片描述
在这里插入图片描述
按照上面的规律,要讲n个元素排序,其核心代码如下:

int[] a = {9,8,5,4,2,0};
		int n = 6;
		for(int i=1;i<n;i++){
			for(int j=0;j<n-i-1;j++){
				if(a[j]>a[j+1]){
					int t = a[j];
					a[j] = a[j+1];
					a[j+1]=t;
				}
			}
		}
		for(int k=0;k<n;k++){
		System.out.print(a[k]+",");
		}

2,4,5,8,9,0,

7.多维数组

  • Java中没有真正的多维数组,只有数组的数组
    在这里插入图片描述
    锯齿数组
  • Java中多维数组不一定是规则矩阵形式
    在这里插入图片描述
    多维数组的创建
    数组类型 数组名[][]   int a[][];
    数组类型[][] 数组名   int[][] b;
    数组类型[] 数组名[]   int[] c[];

数组名 = new 数据元素类型[行数][列数];
数组名 = new 数据元素类型[行数][];
例如:
 a = new int [3][4];
 a = new int [3][];
 a = new int [][4];

多维数组初始化
数组类型 数组名[][] = {{元素11,元素12,…},{元素21,元素22,…}}
数组类型 数组名[][] = new 数据类型[][]{{元素11,元素12,…},{元素21,元素22,…}}
例如:
int a[][] = {{1,2,3},{4,5},{7}};
int a[][] = new int[][] {{1,2,3},{4,5},{7}};

二维数组举例:
在这里插入图片描述

  • 静态初始化:
    int intArray[][] = {{1,2},{2,3},{3,4,5}};
    int intArray1[3][2] = {{1,2},{2,3},{4,5}};
    //illegal,等号左边不能指定维数

  • 动态初始化
    int a[][] = new int[4][5];
    int b[][] = new int[3][]
    b[0] = new int[2];
    b[1] = new int[3];
    b[2] = new int[5];

二维数组的应用

  • 存储用户名密码,当存储用户名和密码的时候,对应匹配,可以使用二维数组
  • 语法:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    二维数组的遍历
		int[][] a = {{1,2,3,4},{4,3,2,1},{5,6,7,8,9}};
		for(int i=0;i<a.length;i++){
			int[] b = a[i];
			for(int j=0;j<b.length;j++){
				//System.out.println(b[j]);
				System.out.println(a[i][j]);
			}
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值