数组
1.概念: 用来存储一组相同数据类型的数据的--->容器
将一组数据统一的管理起来
2.特点: 数组本身是一个引用数据类型 []
数组内部可以存储的元素 可以是基本类型 也可以是引用类型
数组是存储在堆内存中的一串连续的地址
如果需要用变量来进行存储 变量空间在栈内存中 变量中存储的数组引用(地址)
数组在初始化时必须指定长度及内部存储元素类型
数组的长度一旦确定是不能再次发生改变
3.定义(创建 声明):
数组内部类型[] 数组名字;
4.初始化(创建数组并赋值)
静态初始化----有长度 有元素
int[] array = new int[]{1,2,3,4,5};
动态初始化----只有长度 没有元素(默认值)
int[] array = new int[长度];
如果长度<0 NegativeArraySizeException 数组长度不合法 长度为负数
5.元素访问(存 取)
通过元素在数组中的位置来访问----index索引
数组的索引是从0开始----->长度-1为止
如果索引出现范围以外的值
ArrayIndexOutOfBoundsException 数组索引越界
6.遍历轮询
正常for 有索引 可以赋值 取值 写法相对来说比较麻烦
增强for 写法相对简单 没有索引 只能取值
*7.数组本身是一个引用数据类型
内存结构的问题 基本数据类型 引用数据类型的区别
=======================================================================
小任务
0.创建一个数组用来存储1-100之间的奇数
*1.给定两个数组a{1,2,3,4} b{5,6,7,8} 将两个数组内的元素对应位置互换
2.给定一个数组a{1,2,3,4,5,6} 将这个数组中的元素头尾对应互换位置
3.给定一个数组a{1,2,3,4,5,6} 计算数组所有元素的平均值
*4.给定一个数组a{1,3,5,7,9,0,2,4,6,8} 找寻数组中的最大值和最小值(极值问题)
5.给定两个数组a{1,2,3} b{4,5} 合并两个数组 (创建一个新的数组5长度)
6.给定一个数组a{1,2,3,9,4,5} 按照数组中的最大值位置 将数组拆分成两个{1,2,3} {4,5}
*7.给定一个数组a{1,2,3,0,0,4,5,0,6,0,7} 去掉数组中的0元素 (创建一个新数组 短的 非零元素挑出来)
8.创建一个数组 存储2-100之间的素数(质数)
*9.数组元素的排序(冒泡 选择 插入 快速 希尔 堆排序 桶排序 归并排序 递归.....)
*10.用户的登录认证(用数组当作小数据库 存值 用户验证)
冒泡排序算法
多维数组
多维数组
数组----是用来存储一组相同数据类型的数据的容器
数组本身是一个引用数据类型[]
数组内部存储的元素?
可以是基本数据类型
也可以是引用数据类型
String[] userBox int[] passwordBox
学过的引用数据类型
String
Math
Scanner
数组本身[] 将好多个数组存放在数组里???
需求 想要创建一个数组[]---里面存储好多个小数组int[]
二维数组
0.数组的概念 特点
1.数组的定义/声明
2.数组的初始化
静态初始化---有长度 有元素
动态初始化---有长度 没有元素(默认值)
3.数组元素的访问
通过元素在数组中的位置----index索引
4.数组元素的遍历/轮询
0.数组特点
数组本身是一个引用类型
声明时必须指定长度 长度一旦确定不能再次发生改变
1.定义/声明
里面存储的类型[] 数组名字;
int[][] array;
2.初始化
静态---有长度 有元素
int[][] array = {{1,2},{3,4,5,6},{7,8,9}};
动态---只有长度 没有元素(默认)
int[][] array =new int[3][2];
array--->{{x,x},{x,x},{x,x}}---> x默认值0
可能会产生一个运行时异常
NullPointerException
3.元素访问
通过元素在数组中的位置---index
array[i][j]
i控制大数组中 小数组的位置
j控制小数组中 元素的位置
4.遍历轮询
正常 增强for循环 嵌套完成
5.引用类型在内存中的存储结构
二维数组在内存中的存储
int[][] array = new int[3][];
//3表示有3个小数组 int[]
//2表示每一个小数组内有2个元素---->表示小数组的长度
//array[0][0] = 10;
//array[0][1] = 20;
//NullPointerException 空指针异常
三维数组
创建一个数组 数组内存储好多个 int[][]
int[][][] array = {{{1,2},{3,4}},{{},{}},{{},{}}};
int[][][] array = new int[3][][];
三个二维数组 每一个里面有两个一维数组 再里面有两个int元素
常见的运行时异常
1.InputMisMatchException 输入类型不匹配
input.nextInt(); 输入一个整数 a
2.ArrayIndexOutOfBoundsException 数组索引越界
静态初始化 int[] array = {10,20};
array[2] 索引超出边界
3.NegativeArraySizeException 数组长度不合法(长度出现负数)
动态初始化 int[] array = new int[-2];
4.NullPointerException 空指针异常
引用为null 还拿来使用就不行啦
int[] array = null;
array[0] = 10;//空元素再拿来用
最容易找到异常 同时也是最难找的
1.模拟班级同学每周换位置
{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}
留给大家2. 利用二维数组 实现用户登录认证
String[] 账号 索引对应 int[] 密码
String[][] {{"郑中拓","123"},{"渡一教育","666"},{"Java","888"}}
main方法
public static void main(String[] args){
}
public 访问权限修饰符 公有的
static 特征修饰符 静态的 有且只有一份
void 方法执行完没有返回值 关键字
main 方法名字 主要的
主方法中的args参数 可否传递?
1.主方法不是我们调用的 JVM虚拟机启动的时候 虚拟机调用的
2.主方法里面有args参数 是一个String[]类型 我们是可以传递参数进去 给JVM
================================================================
面向对象的编程思想(核心)