五.数组

1.数组是什么?为什么使用数组?
比如我要统计每位员工的工资,我得定义多个变量去分开存储,因为一个变量只能保存一个数据,如果过多的员工,太麻烦了,那么我怎么用一个变量去存储多个员工工资呢?
可以使用数组,数组就是一个大的容器,他可以存放多个值
2.什么是数组?
数组和变量差不多,都是存放数据的,不同的是变量只能保存一条数据,而数组可以保存多条数据,前提这个多条数据必须是同一类型的
数组是引用数据类型
3.如何定义数组?
数组类型[ ] 数组名;
如果定义好数组以后,必须要给数组进行初始化

  • 数组的初始化:
    ①动态初始化:指定数组的长度,一旦长度指定,就是数组中只能存放多少数据
    两种格式:
    第一种:
    数组类型[ ] 数组名=new 数组类型[数组长度];
    在这里插入图片描述
    第二种:
    数组类型[ ] 数组名;
    数组名=new 数组类型[数组长度];
    在这里插入图片描述
  • 创造好了数组,怎么给数组进行赋值。通过数组的下标,数组的下标从0开始
    在这里插入图片描述
    ②静态初始化:不是指定数组长度,而是直接在初始化数组的同时,给数组赋值
    两种格式:
    第一种:
    数组类型[ ] 数组名=new 数组类型[ ]{数据1,数据2…};
    在这里插入图片描述
    第二种:
    数组类型[ ] 数组名;
    数组名=new 数组类型[ ]{数据1,数据2…};
    在这里插入图片描述
    ③还有一种最简单的方式:
    数组类型[ ] 数组名={数据1,数据2…};
    在这里插入图片描述

4. 如何获取数组长度
数组名.length
数组的长度一旦定义,不可改变
在这里插入图片描述
输出结果:array3数组的长度:5

5.数组中最常见的几种异常
1.数组越界异常
在这里插入图片描述.
2.空指针异常
在这里插入图片描述
6.遍历数组
数组遍历只有两种方式:
①使用for循环
i代表的是数组的下标
在这里插入图片描述

②foreach(for循环的增强版)
for(定义变量接收数组的每一个元素值:要遍历的数组名)
在这里插入图片描述
7.数组分类
①基本数据类型的数组
动态初始化数组以后,数组的元素都会赋予一个默认值:
byte short int long double float char boolean
0 0 0 0 0.0 0.0 空格 false
在这里插入图片描述
int输出结果:10 0 0 12 0
在这里插入图片描述
②引用数据类型的数组
String 接口 自己定义的类…
引用数据类型的默认值:null
自己定义的类不能为空,必须有值
在这里插入图片描述
8.java中的内存是怎么进行分配的(有默认值的原因是要分配空间)
内存的申请和释放都是jvm进行管理的,java程序要运行,jvm会自动的向电脑申请一块内存,他会把这块内存分为五部分:
①栈(Stack):主要存放局部变量
②堆(Heap):凡是new出来的东西都在堆里面,堆当中的数据都有默认原则;
整数:0 小数:0.0 布尔:false char:空格 引用数据类型:null
③方法区(Method Area):存放的是与.class相关的信息
④本地方法区(Native Method Area):与操作系统有关
⑤寄存器(Register):与cup有关

  • 例题:
    ①int[] a;
    a=new int[3];
    a=new int[4];//可以 对a重新赋值
    ②int[] a;
    a=new int[3];
    a=new String[4];//不对
    ③int[] a=new int[]{1,2,3};
    int[] b=new int[]{1,2,3};
    System.out.println(a==b);//false 地址不一样
  • 例题一:求出学生成绩的总分,平均分,最高分,最低分
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 例题二:{“C语言”,“C++”,“C#”,“Java”,“Python”,“js”};逆序输出
    在这里插入图片描述
    9.冒泡排序
    核心思想:数组中的元素两两比较
    10.20.30.40.50.60 从大到小输出过程:
    ①20.30.40.50.60.10 第一趟比较了五次
    ②30.40.50.60.20.10 第二趟比较了四次
    ③40.50.60.30.20.10 第三趟比较了三次
    ④50.60.40.30.20.10 第四趟比较了两次
    ⑤60.50.40.30.20.10 第五趟比较了一次
    六个数比较了五趟
    N个数比较了N-1趟
    次数:m个数第t趟比较了m-t次
    趟数:外层i=0 趟数=i+1//第一趟
    外层i=1 趟数=i+1//第二趟
    口诀(升序):
    n个数字来排队
    两两相比小靠前
    外层循环n-1
    内层循环n-1-i
    在这里插入图片描述
    在这里插入图片描述

10.选择排序(了解):效率较低
找到数组中所有元素的最小值,依次互换位置
在这里插入图片描述
11.二维数组
①定义:数组中的数组
②声明二维数组:
数据类型[ ][ ] 数据名;
第一个[ ] :二维数组中有几个一维数组 行
第二个[ ] :每个一维数组中有多少元素 列
③初始化二维数组

  • 第一种方式:动态初始化
    在这里插入图片描述
    输出结果:10 0
  • 第二种方式:静态初始化
    在这里插入图片描述
  • 第三种方式:简写方式
    在这里插入图片描述
    ④遍历二维数组
  • for循环实现
    如何获取二维数组的长度:第一个[ ]
    在这里插入图片描述
  • foreach实现
    在这里插入图片描述
  • 例题:
    在一个酒店中,一共有三层楼,每层有4个房间。
    101 102 103
    201 202 203 205
    301 302
    楼层:使用数字1,2,3表示房间号:使用101,102,103,104表示…
    要求:使用二维数组赋值并遍历输出。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fuchsia_/article/details/107719154