一维数组
int[] a=new int[4];//声明能存4个int类型数据的数组//动态初始化
int[] b=new int[]{1,2,3,4,};//静态初始化
int b[]=new int[]{};
String[] strs =new String[]{"a","b"};
System.out.println(strs[1]);//b
System.out.println(strs.length);//2
二维数组
int[][]aa=new int[][]{};
int[][]bb=new int[2][3];//第一维长度为2,第二维长度为3
int[][]bb=new int[2][];//只定义第一位的数组
int[]x,y[];//x为一维数组,y是二维数组,特殊写法
int[][]ma=new int[][]{
{1,3},
{2,4},
{1,2,3},
};
System.out.println(ma[2][2]);
求二维数组里面的值的和
int[][] ma = new int[][] { { 1, 3 }, { 2, 4 }, { 1, 2, 3 },
};//求二维数组里面的值的和
int res = 0;
for (int i = 0; i < ma.length; i++) {
for (int j = 0; j < ma[i].length; j++) {
res += ma[i][j];
}
}
System.out.println(res);
数组中的常见算法
int[] arr = new int[] { 4, 5, 7, 8, 5, 9, 5, 0 };
最大值
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
}
System.out.println(max);
最小值
int min=arr[0];
for(int j=0;j<arr.length;j++){
if(arr[j]<min){
min=arr[j];
}
}
System.out.println("min="+min);
总和平均数
int res=0;
int aver=0;
for(int i = 0;i<arr.length;i++){
res+=arr[i];
}
aver=res/arr.length;
System.out.println("总和="+res+"平均数="+aver);
数组的复制,不是赋值
int[]copy=new int[arr.length];//重新声明一个与arr长度一样的数组
for(int i=0;i<arr.length;i++){
copy[i]=arr[i];//遍历arr把arr的每个元素拿出来,再赋值给copy;
}
反转
考虑声明一个temp数组,长度与arr数组长度一样,倒着循环arr,给temp赋值
int[]temp=new int[arr.length];
int k =0;
for(int j=arr.length-1;j>=0;j--){
temp[k]=arr[j];
k++;
}
arr=temp;
System.out.println(arr[0]);
冒泡排序
**正序 75249
第一轮得到一个最大的数,放在倒数第一位
第二轮,得到除最后一个数之外的最大数,放在倒数第二位
。。。。。**
int []arr=new int[]{7,5,2,4};
int temp=0;
for(int i =0;i<arr.length;i++){//外循环,每次循环次数少一次
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
//正序,后面的大于前面的
//倒叙,前面的大于后面的,改成arr[j]<arr[j+1]
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]);
}
/// 数组中可能出现数组越界异常和 空指针异常