数组

数组:相同数据类型的数据的组合。

如: 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
 

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

数组常见异常

//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);
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值