一维与二维数组

一维数组及经典应用

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

什么是数组

  • 数组基本要素
    • 标识符
    • 数组元素
    • 元素下标:从0 开始
    • 元素类型
    • 在这里插入图片描述
数组长度固定不变,避免数组越界
数组中的所有元素必须属于相同的数据类型

如何使用数组

  • 使用数组四步走
    1. 声明数组 int[]a;
    2. 分配空间 a=new int[5];
    3. 赋值 a[0]=8
    4. 处理数据 a[0]=a[0]*10;

声明数组

  • 声明数组:告诉计算机数据类型是什么
    int[] score1;       //Java成绩
    int score2[];       //c#成绩
    String[] name;      //学生姓名
  • 语法
    数据类型 数组名[];
    数据类型[] 数组名;
    声明数组时不规定数组长度

注意

        //变量类型 变量名 变量值
        // 数组类型 数组名 = 数组值 1 2 3 4 5 6
        // 数组元素个数-1=最大数组下标
        //数组下标是从0开始的
        int [] a;
        a=new int[5];
        a[0]=8;
double[] b=new double[3];//边声明 边分配空间
 //数组在使用的时候 要合理分配空间 如果太小 不够存储 如果太大呢?
 //1.导致空间浪费 2.依然不够数据存储 不能无脑加大数组的长度
//声明数组后 如果是空的 他的默认值是根据数组类型来决定的
//从数组中取数运算时,注意下标的值 可能会 ArrayIndexOutOfBoundsException 数组索引越界异常

分配空间

  • 分配空间:告诉计算机分配几个连续的空间
    scores=new int[30];
    avgAge=new int[6];
    name=new String[30];
  • 声明数组并分配空间
    数据类型[] 数组名 = new 数据类型[大小];

数组元素根据类型不同,有不同的初始值

数组赋值
  • 方法1:边声明边赋值
//数组边声明边赋值  此时是不能在[]内写数字的 不能指定长度 长度由{}内的元素个数来决定的
        //{}内的元素通过 , 分割
        int[] array=new int[]{10,20,30,20,20,10};
    int[] array={89,79,76};//不能指定数组长度
  • 方法2:动态地从键盘录入信息并赋值
    Scanner input = new Scanner(System.in);
    for(int i=0;i<30;i++){
        scores[i]=input.next.nextInt();
    }
处理数据
  • 对数据进行处理:计算5位学生的平均分
    int [] scores={60,80,90,70,85};
    double avg;
    avg=(scores[0]+scores[1]+scores[2]+scores[3]+scores[4])/5;
    int[] scores={60,80,90,70,85};
    int sum=0;
    double avg;
    for(int i = 0; i<scores.lenght; i++){
        sum=sum+scores[i];

    }
    avg=sum/scores.lenght;

二维数组

冒泡排序
  • 分析
    每轮比较相邻两数
    小的交换到最前面
    每轮结束后最大的数交换到最后
用二重循环实现冒泡排序
  • 用二重循环将5个数字升序排序
    • 5个数字如何存放
      • 数组,数组.length=5
    • 控制比较多少轮
      • 控制比较多少伦
    • 控制每轮比较多少次
      • 内层循环,循环变量j
    • 交换数据
冒泡排序小结
  • 冒泡排序速记口诀(升序)
    • N个数字来排队
    • 两两相比小靠前
    • 外层循环 N-1
    • 内层循环 N-1-i

使用Arrays为数组排序

  • 使用java.util.Arrays类
    • java.util包提供的工具类
    • Arrays类提供操作数组的方法,如:排序、查询
    • Arrays类的sort()方法:对数组进行升序排列

Arrays.sort(数组名);

Arrays类

方法名称说明
boolean equals(array1,array2)比较array1和array2两个数组是否相等
sort(array)对数组array的元素进行升序排列
String toString(array)将一个数组array转换成一个字符串
void fill(array,val)把数组array所有元素都赋值为val
copyOf(array,length)把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
int binarySearch(array,val)查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)

二维数组

<数据类型>[][] 数组名; 或者 <数据类型> 数组名 [][];

    int [][] scores; //定义二维数组
    scores=new int[5][50]; //分配内存空间
    //或者
    int[][] scores=new int[5][50];
    //定义二维数组时,要定义最大维数
二维数组与内存2-1

int[][] s=new int[3][5];
在这里插入图片描述

二维数组与内存2-2
    int[][] scores=new int[3][5];
    score[0][0]=90;
    score[2][3]=70;

在这里插入图片描述

二维数组定义
  • 定义并赋值
    • 写法一
    int[][] scores=new int[][]{{90,85,92,78,54},{76,63,80},{87}};
    
    • 写法二
    int scores[][]={{90,85,92,78,54},{76,63,80}{87}};
    
    • 写法一
    int[][] scores=new int[][]{{90,85,92,78,54},{76,63,80},{87}};
    
    • 写法二
    int scores[][]={{90,85,92,78,54},{76,63,80}{87}};
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值