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");
}
}
}