一维数组和应用

数组的定义、使用与操作详解
本文围绕数组展开,介绍了数组基本要素,包括标识符、元素、下标和类型等。演示了数组定义和使用的三种方式,指出定义时常见错误。还阐述了数组的操作,如输出元素、求和、求最大值、插入数值、选择排序等,以及Arrays类的使用。

数组

数组是一个变量,存储相同数据类型的一组数据
声明一个变量是在内存空间里划出一块合适的空间
声明一个数组就是在内存空间里划出一串连续的空间

数组基本要素

标识符–>数组名
数组元素 -->值
元素下标:从0开始
元素类型 -->类型
注:数组长度固定不变,避免数组越界

演示数组的定义和使用

单独声明-分配空间-赋值-使用

        int[] a;//单独声明
        a=new int[3];//分配空间
        //赋值
        a[0]=88;
        a[1]=90;
        a[2]=96;
        a[0]=75;
        System.out.println(a[0]);

注:声明数组时不规定数组长度

声明数组并分配空间

数据类型[ ] 数组名 = new 数据类型[大小] ;
数组元素根据类型不同,有不同的初始值

边声明边赋值

int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
不能指定数组长度

数组定义时的常见错误

1、编译出错,没有写明数组的大小
int[] a = new int[];
2、编译出错,数组越界
int[] a =new int[2];
a[2] =1;
3、编译出错,创建数组并赋值的方式必须在一条语句中完成
int[ ] score = new int[5];
score = {60, 80, 90, 70, 85};
int[ ] score2;
score2 = {60, 80, 90, 70, 85};

数组的操作

输出数组里的元素

        int[] a =new int[30];
        for (int i=0;i<a.length;i++){
            a[i]=(int)(Math.random()*100);
        }
        System.out.print("[");
        for (int i=0;i<a.length;i++){
            if (i==a.length-1){
                System.out.print(a[i]+"]");
                break;
            }
            System.out.print(a[i]+",");
        }

求和

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

增强for

       for (int num:a){//增强for 将数组中的元素临时赋值给num
            sum+=num;
        }
        System.out.println(sum/(double)a.length);
    }

求最大值

先假设a[0]是最大值max,数组里的其他元素依次和max比较,如果比max大,就将值给max

        int max=a[0];
        for (int i = 1; i < a.length; i++) {
            if (a[i]>max){
                max=a[i];
            }
        }
        System.out.println("最大值是:"+max);

插入数值

        int[] a={99,85,82,63,60};
        //第一步先扩容
//        int[] b=new int[a.length+1];
//        for (int i = 0; i < a.length; i++) {
//            b[i]=a[i];
//        }
        int[] b=Arrays.copyOf(a,6);
        System.out.println(Arrays.toString(b));
        int num=98;
        //从后向前比较
        //比该数小的后移
        //找到比该数大的 则该数在大的后面插入
        //如果找不到比该数大的 则该数插入首位
        boolean isInsert=false;
        for (int i = b.length-2; i >=0; i--) {//此时的数组b里面的元素是{99,85,82,63,60,0}所以从b.length-2开始比较
            if (b[i]<num){
                b[i+1]=b[i];
            }else {
                isInsert=true;
                b[i+1]=num;//找到比该数大的 则该数在大的后面插入
                break;
            }
        }
        if (!isInsert){
            b[0]=num;//如果找不到比该数大的 则该数插入首位
        }
        System.out.println(Arrays.toString(b));

选择排序

        //基本逻辑:外层循环确定一个位置
        //内层循环确定该位置的值(当前最小值)
        int[] a=new int[10];
        for (int i = 0; i < a.length; i++) {
            a[i]=(int)(Math.random()*100);
        }
        System.out.println(Arrays.toString(a));
        for (int i = 0; i < a.length-1; i++) {
            int temp=a[i];//确定位置
            int p=i;
            for (int j = i+1; j < a.length; j++) {
                if (temp>a[j]){
                    temp=a[j];
                    p=j;
                }
            }
            a[p]=a[i];
            a[i]=temp;
        }
        System.out.println(Arrays.toString(a));

Arrays

import java.util.Arrays;
Arrays.toString(a) 输出数组
Arrays.sort(a); 数组从小到大排列
int[] b=Arrays.copyOf(a,6); 复制数组a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值