第三章 数组

1、概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、一维数组的使用

package bjk;
/*
 一维数组的使用
 1、一维数组的声明和初始化
 2、如何调用数组的指定位置的元素
 3、如何获取数组的长度
 4、如何遍历数组
 5、数组元素的默认初始化
 6、数组的内存解析
 */
public class ArrayTest {
	public static void main(String[] args) {
		//1.一维数组的声明和初始化
		int num;//声明
		num = 10;//初始化
		int id = 1001;//声明+初始化
				
		int[] ids;//声明
		//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
		ids = new int[] {1001,1002,1003,1004};//初始化
		//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
		String[] names = new String[5];
		
		//2、如何调用数组的指定位置的元素:通过角标的方式调用
		//数组的角标(索引)从0开始,到数组的长度-1结束
		names[0] = "王";
		names[1] = "李";
		names[2] = "刘";
		names[3] = "张";
		names[4] = "孙";
		
		//3、如何获取数组的长度:属性:length
		System.out.println(names.length);//5
		System.out.println(ids.length);
		
		//4、如何遍历数组
		for(int i = 0;i < names.length;i++) {
			System.out.println(names[i]);
		}
	}

}
package bjk;
/*
5、数组元素的默认初始化值
	其数组元素为>整型:0
			>浮点型:0.0
			>char型:0或'\u0000',而非'0'
			>boolean型:false
			
			>引用数据类型:null
6、数组的内存解析
 */
public class ArryTest1 {
	public static void main(String[] args) {
		//5.数组元素的默认初始化值
		int[] arr = new int[4];
		for(int i = 0;i < arr.length;i++) {
			System.out.println(arr[i]);
		}
		
		float[] arr1 = new float[4];
		for(int i = 0;i < arr1.length;i++) {
			System.out.println(arr1[i]);
		}
		
		char[] arr2 = new char[4];
		for(int i = 0;i < arr2.length;i++) {
			System.out.println(arr2[i]);
		}
	}

}

在这里插入图片描述
在这里插入图片描述

3、二维数组的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package bjk;

public class ArryTest2 {
	public static void main(String[] args) {
		//1.二维数组的声明和初始化
		//静态初始化
		int[][] arr1 = new int[][] {{1,2,3},{4,5},{6,7,8}};
		//动态初始化1
		String[][] arr2 = new String[3][2];
		//动态初始化2
		String[][] arr3 = new String[3][];
		
		//2.如何调用数组的指定位置的元素
		System.out.println(arr1[0][1]);//输出结果为:2
		System.out.println(arr2[1][1]);//输出结果为:null
		
		arr3[1] = new String[4];
		System.out.println(arr3[1][0]);//输出结果为:null
		
		//3.获取数组的长度
		int[] arr4[] = new int[][]{{1,2,3},{4,5},{6,7,8}};
		System.out.println(arr4.length);//输出结果为:3
		System.out.println(arr4[0].length);//输出结果为:3
		System.out.println(arr4[1].length);//输出结果为:2
		
		//4.如何遍历二维数组
		for(int i =0;i < arr4.length;i++) {
			for(int j = 0;j < arr4[i].length;j++) {
				System.out.print(arr4[i][j] + " ");
			}
			System.out.println();
		}
		
		
		//5.数组元素的默认初始化值
		int[][] arr5 = new int[4][3];
		System.out.println(arr5[0]);//输出结果为:地址值:[I@15db9742
		System.out.println(arr5[0][0]);//输出结果为:0
		
		String[][] arr6 = new String[4][2];
		System.out.println(arr6[1]);//输出结果为:地址值:[Ljava.lang.String;@6d06d69c
		System.out.println(arr6[1][1]);//输出结果为:null
		
		double[][] arr7 = new double[4][];
		System.out.println(arr7[1]);//输出结果为:null
		System.out.println(arr7[1][0]);//输出结果为:报错,空指针异常
		
		
		//6.数组的内存解析
	}

}

在这里插入图片描述

4、数组中常见算法

在这里插入图片描述

4.1 打印杨辉三角

package bjk;
/*
 使用二维数组打印一个10行杨辉三角
 1、第一行有1个元素,第n行有n个元素
 2、第一行的第一个元素和最后一个元素都是1
 3、从第三行开始,对于非第一个元素和最后一个元素的元素。即:
 yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]
 */
public class YangHuiTest {
	public static void main(String[] args) {
		//1.声明并初始化二维数组
		int[][] yangHui = new int[10][];
		
		//2.给数组的元素赋值
		for(int i = 0;i < yangHui.length;i++) {
			yangHui[i] = new int[i +1];
			
			//2.1给首末元素赋值
			yangHui[i][0] = yangHui[i][i] = 1;
			//2.2给每行的非首末元素赋值
			if(i > 1) {
				for(int j =1;j < yangHui[i].length -1;j++) {
					yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
				}
			}
		}
		//3.遍历二维数组
		for(int i = 0;i < yangHui.length;i++) {
			for(int j = 0;j < yangHui[i].length;j++) {
				System.out.print(yangHui[i][j] + " ");
			}
			System.out.println();
		}
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 冒泡排序实现

package bjk;
/*
 * 数组的冒泡排序的实现
 */
public class BubbleSortTest {
	public static void main(String[] args) {
		int[] arr = new int[] {43,32,76,34,67,23,45,123,656,342,23,11,3,5};
		
		//冒泡排序
		for(int i = 0;i < arr.length;i++) {
			for(int j=0;j < arr.length - 1 - i;j++) {
				if(arr[j] > arr[j + 1]) {
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		for(int i = 0;i < arr.length;i++) {
			System.out.println(arr[i] + "\t");
		}		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值