//数组的静态初始化赋值:
// int[] arr=new int[] {15,12};
// System.out.println(arr[0]);
// System.out.println(arr[1]);
// //数组的动态初始化赋值:
// //int[] arr1=new int[3];
// arr[0]=2;
// //数组属性
// System.out.println(arr1.length);
// //数组的遍历
// for (int i = 0; i <arr.length ; i++) {
// System.out.println(arr[i]);
// }
/*
数组知识:整形数组元素的初始化值为:0
浮点型数组元素的初始化值是0.0
char类型数组元素的值为:0或'\u0000'
boolean类型的数组元素初始化值为:false
引用数据类型的初始化值为:null 不只是局限于String
当new数组对象时 ,根据数组元素在栈中开辟相应的空间.并初始化相应的值
*/
//二维数组的定义以及初始化
String[][] arr3 = new String[3][];
//arr3[1]这个意思是第一个元素纵向增加四个元素
arr3[1] = new String[4];
System.out.println(arr3[1][0]);//输出第二行第一个元素
System.out.println(arr3[0]);//输出第一行的元素
//二维数组的遍历
int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
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();
}
//arr[]带一个括号的数组可能是一个一维数组也可能是二维数组的外层元素
//arr[][]带两个括号的数组元素除了初始化时候基本上是确定的某个元素;
/*
外层元素的默认初始化值为地址值,内层元素的默认初始化值和一维数组一样;
针对于初始化方式二:比如:int[][] arr = new int[4][];
特殊情况:外层元素的初始化值为:null
内层元素的初始化值为:不能调用,否则报错。
*/
1: //数组的赋值与复制
int[] arr1, arr2;
arr1 = new int[]{1, 3, 4, 5};
arr2 = arr1;//原理是将数组一地址指向数组二.使得数组一与数组二共同只想堆空间的同一个元素.
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]);
}
2:数组的复制
arr2=new int[arr1.length];
for (int i = 0;i<arr1.length;i++)
{
arr2[i]=arr1[i];
System.out.print(arr2[i]+"");
}
//将数组一的长度复制给数组二,通过循环遍历依次将数据一的元素赋值给数组二
3:重点数组的反转:
System.out.println("*************");
for (int i = 0; i < arr2.length / 2; i++) {
int temp = arr2[i];
arr2[i] = arr2[arr2.length - i - 1];
arr2[arr2.length - 1 - i] = temp;
}
for (int j = 0; j < arr2.length; j++)
{
System.out.print(arr2[j]);
}
4:手写数组冒牌排序
int[] arrs=new int[]{12,32,44,63,22,19,21};
for (int i = 0; i < arrs.length-1; i++) {
for (int j = 0; j <arrs.length-i-1 ; j++) {
if(arrs[j]>arrs[j+1]) {
int temp = arrs[j];
arrs[j] = arrs[j + 1];
arrs[j + 1] = temp;
}
}
}
for (int i = 0; i <arrs.length ; i++) {
System.out.println(arrs[i]);
}
//代码思考:数组的,复制,反转基本涉及到算法,很少调用数组的方法(length);
//冒泡排序:将第一个元素依次与后面的元素进行比较,如果从第二个元素开始就交换,就将第二个元素作相同的操作 最好自己用较少数组长度的去心理推演一次;
//理解什么是冒泡排序,涉及到的元素如果是有交换角标是[i+1]操作那么要想一下遍历的时候的条件判断是否应该减一;
}
数组异常:角标越位异常-通俗来说 开发者只能对(0-arrays[].length)内的角标进行查看,遍历等....
空指针异常:对于数组角标里面元素为空时,却想进行输出内容
int[] arr1 = new int[]{1,2,3};
// arr1 = null;
// System.out.println(arr1[0]);
//情况二:
// int[][] arr2 = new int[4][];
// System.out.println(arr2[0][0]);