Java一维数组

数组:

1.与变量的区别:

变量:存储数据的空间(装数据的容器),变量中只能装一个数据 。

数组:存储数据的空间(装数据的容器),数组中可以装多个相同类型的数据。

2.声明数组: 数据类型[] 数组名; 或者 数据类型 数组名[];
      

        byte[] nums1; // 也可以写成 byte nums1[];
        short[] nums2;
        int[] nums3;
        long[] nums4;
        float[] nums5;
        double[] nums6;
        char[] chars1;
        boolean[] booleans1;
        String[] strs1;

2.分配空间:数组的长度是固定不变的,你需要告诉数组能存储多少个元素
        // 数组名 = new 数据类型[数组长度];
      

        nums1 = new byte[3];
        nums2 = new short[4];
        nums3 = new int[6];
        nums4 = new long[2];
        nums5 = new float[3];
        nums6 = new double[4];
        chars1 = new char[3];
        booleans1 = new boolean[5];
        strs1 = new String[4];

3.赋值:将数据存储在数组中 数组名[下标] = 数据;
      

        nums3[0] = 11;
        nums3[1] = 20;
        nums3[2] = 32;
        nums3[3] = 12;
        nums3[4] = 31;
//        nums3[5] = 23;
        // ArrayIndexOutOfBoundsException
        // 数组下标越界异常吗,因为nums3的长度为6,下标从0-5,6超出了下标的范围,所以报异常
        // nums3[6] = 99;

4.声明数组和分配空间合并写

 数据类型[] 数组名 = new 数据类型[数组长度];  或  数据类型 数组名[] = new 数据类型[数组长度];

       //声明一个长度为4的int类型的数组
        int[] nums1 = new int[4];
        //声明一个长度为3的String类型的数组
        String strs1[] = new String[3];
        //声明一个长度为5的char类型的数组
        char[] chars1 = new char[5];

5.声明数组、分配空间、赋值合并写

(1)数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...,数据n}; 或者 数据类型 数组名[] = new 数据类型[]{数据1,数据2,...,数据n};

boolean[] booleans1 = new boolean[]{true,false,true};

String[] strs1 = new String[]{"hello","java","java2219","world","class"};

(2)数据类型[] 数组名 = {数据1,数据2,...,数据n}; 或者 数据类型 数组名[] = {数据1,数据2,...,数据n};

char[] chars1 = {'q','w','e','r','t'};

6.操作数组中某个位置的元素(数据)
     

   // 输出nums3数组中各个位置上的数据,通过 数组名[下标]来操作数组中某个位置上的数据
        

        System.out.println(nums3[1]);//20
        System.out.println(nums3[3]);//12
        System.out.println(nums3[5]);//0
        
        nums3[1]*=10;//nums3[1]=nums3[1]*10;
        System.out.println("nums3[1]扩大10倍:"+nums3[1]);
        

        
7.注意:数组声明好并分配空间后,如果没有进行赋值操作,数组会给每个元素一个默认的初始值
      

 // 整数类型的数组元素默认值0,浮点数类型的数组元素默认值0.0 char类型数组的数组元素默认值是空格,boolean类型数组的数组元素默认值false,引用数据类型的数组元素默认值为null
        System.out.println(nums1[0]);//0
        System.out.println(nums2[0]);//0
        System.out.println(nums4[0]);//0
        System.out.println(nums5[0]);//0.0
        System.out.println(nums6[0]);//0.0
        System.out.println(chars1[0]);// 空格
        System.out.println(booleans1[0]);//false
        System.out.println(strs1[0]);//null
    

示例:

public static void main(String[] args) {
        /*
         * 有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
         * 
         * 数组长度一旦固定好以后,是不能修改,这时候,你要插入一个学员成绩,是无法插入的,你只能新建一个长度比原来数组长度大1的数组
         * 
         * 
         * 1)新建一个长度比原来数组大1的数组
         * 
         * 2)将原来数组中的元素存储到这个新的数组中
         * 
         * 3)获取你要插入的数据
         * 
         * 4)获取插入元素要插入的位置(下标),通过循环比较插入的数据与数组中元素得到
         * 
         * 5)从插入位置开始及之后的元素依次往后移动一个位置,空出插入位置,存储插入的元素,移动需要从最后一个位置开始操作
         * 
         * 6)将插入的元素存储到插入位置
         */
        // 创建Scanner类对象,用于输入你要插入的数据
        Scanner sc = new Scanner(System.in);

        // 原来的成绩数组
        int[] scores = { 99, 85, 82, 63, 60 };

        // 1)新建一个长度比原来数组大1的数组
        int[] newScores = new int[scores.length + 1];
        // 2)将原来数组中的元素存储到这个新的数组中
        // newScores[0]=scores[0];
        // newScores[1]=scores[1];
        // newScores[2]=scores[2];
        // newScores[3]=scores[3];
        // newScores[4]=scores[4];

        for (int i = 0; i < scores.length; i++) {
            newScores[i] = scores[i];
        }

        // 遍历数组
        System.out.println("插入成绩之前:");
        for (int i : newScores) {
            System.out.print(i + " ");
        }
        System.out.println();

        // 3)获取你要插入的数据
        System.out.println("请输入你要插入的成绩:");
        int insert = sc.nextInt();

        // 4)获取插入元素要插入的位置(下标)
        int index = newScores.length-1;
        for (int i = 0; i < newScores.length; i++) {
            // 如果插入的元素比数组中的元素大,表面插入元素要存储在该位置
            if (insert > newScores[i]) {
                index = i;
                // 一旦得到插入数据比数组中元素大,就结束后续比较,退出循环
                break;
            }
        }

        // 5)从插入位置开始及之后的元素依次往后移动一个位置
        for (int i = newScores.length - 1; i > index; i--) {
            newScores[i] = newScores[i - 1];
        }

        // 6)将插入的元素存储到插入位置
        newScores[index] = insert;

        // 遍历数组
        System.out.println("插入成绩之后:");
        for (int i : newScores) {
            System.out.print(i + " ");
        }
        System.out.println();

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪仔思密达

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值