前言:
目前同学们对“java语言中数组在静态和动态赋值时都判越界”大概比较珍视,你们都想要学习一些“java语言中数组在静态和动态赋值时都判越界”的相关资讯。那么小编在网上搜集了一些有关“java语言中数组在静态和动态赋值时都判越界””的相关知识,希望咱们能喜欢,姐妹们快快来学习一下吧!数组
数组:相同数据类型的数据的组合。
如: int score1 = 72;
int score2 = 90;
int score3 = 59;
使用数组:
1.数组的初始化
int[] scores1 = new int[]{72,90,59};//静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。
int scores2[] = new int[3];//动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行。
scores2[0] = 72;
scores2[1] = 90;
scores2[2] = 59;
//声明数组的错误写法:
1)String[] names = new String[5]{"AA","BB","CC"};
2)int i[10];
3)int i = new int[];
注:不管是动态还是静态初始化数组,一定在创建的时候,就指明了数组的长度!
2.如何引用数组元素:通过数组的下角标的方式。下角标从0开始,到n-1结束。其中n为数组的长度。
3.数组的长度:通过数组的属性length来调用。
System.out.println(scores2.length);//3
4.如何遍历数组
for(int i = 0;i < scores1.length;i++){
System.out.println(scores1[i]);
}
5.关于数组元素的默认初始化值
1)byte short int long 而言:0
2)float double 而言:0.0
3)char而言:空格
4)boolean而言:false
5)引用类型变量而言:null
6.数组的内存结构
对于数组来讲:
二维数组
1.声明并初始化
//一维:
int[] i = new int[12];
i[0] = 12;
int[] j = new int[]{12,3};
//二维:
1)String[][] str = new String[4][3]; //4行3列
2)String[][] str1 = new String[4][];
str1[0] = new String[3];
...
str1[3] = new String[5];
3)
int[][] arr = new int[][]{{1,2,3},{4,5},{6}};
2.如何引用二维数组的元素:arr[1][0] = 12;
3.二维数组的长度:arr.length;//3
arr[1].length;//2
4.遍历二维数组
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
5.二维数组的结构:
数组的常见异常
1.数组下标越界的异常:java.lang.ArrayIndexOutOfBoundsException
int[] i = new int[10];
i[0] = 90;
i[10] = 99;
for(int m = 0;m <= i.length;m++){
System.out.println(i[m]);
}
2.空指针的异常:NullPointerException
第一种:
boolean[] b = new boolean[3];
b = null;
System.out.println(b[0]);
第二种:
String[] str = new String[4];
str[3] = new String("AA");//str[3] = "AA";
System.out.println(str[3].toString());
//第三种:
int[][] j = new int[3][];
j[2][0] = 12;
数组的常见的算法问题
1.求数组元素的最大值、最小值、和、平均数
2.数组的复制和反转
情况1:
情况2:(如何实现复制)
数组的反转:
// 数组元素的反转
// for(int i = 0;i < arr.length/2;i++){
// int temp = arr[i];
// arr[i] = arr[arr.length-1 - i];
// arr[arr.length - 1 - i] = temp;
// }
for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
拓展:String str = "abcdefg";
数组的排序:
插入排序
直接插入排序、折半插入排序、Shell排序
交换排序
冒泡排序、快速排序(或分区交换排序)
选择排序
简单选择排序、堆排序
归并排序
基数排序
// 使用冒泡排序使数组元素从小到大排列
// for (int i = 0; i < arr.length - 1; 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 - 1; i++){
// int t = i;//默认i处是最小的
// for(int j = i;j < arr.length;j++){
// //一旦在i后发现存在比其小的元素,就记录那个元素的下角标
// if(arr[t] > arr[j]){
// t = j;
// }
// }
// if(t != i){
// int temp = arr[t];
// arr[t] = arr[i];
// arr[i] = temp;
// }
// }
还可以调用:Arrays工具类:Arrays.sort(arr);