第五章JAVA数组
1,数组是什么?为什么使用数组?
数组可以存放多个值。因为一个变量,只能保存一个数据
数组用来将相同数据类型存储在存储单元里,数组的所有元素必须属于相同的数据类型
2,什么是数组
数组和变量差不多,都是存放数据的,不同的是,变量只能保存一条数据,而数组可以保存多条数据,前提这个多条数据必须是同一类型的
数组是引用数据类型,除了八大基本数据类型,其他的都是引用的
3.如何定义数组?
数组类型[]数组名;
如果定义好数组以后,必须要给数组进行初始化
数组是一个引用数据类型
4.数组的初始化分为两种:
①动态初始化:指定数组的长度,一旦长度指定,就是数组中只能存放多少数据
两种格式:
第一种:
数组类型[]数组名=new 数组类型[数组长度];
第二种:
数组类型[]数组名;
数组名=new 数组类型[数组长度];
怎么给数组进行赋值?
通过数组的下标,数组的下标从0开始
②静态初始化:不是指定数组长度,而是直接在初始化数组的同时给数组赋值
两种格式:
第一种:
数组类型[]数组名=new 数组类型[]{数据1,数据2……};
第二种:
数组类型[]数组名;
数组名=new 数组类型[]{数据1,数据2……};
还有一种最简单的方式,数组类型[]数组名={数据1,数据2……};
5.获取数组长度
数组名.length,数组的长度一旦定义,不可改变
6.数组中常见的几种异常
①数组越界异常:ArrayIndexOutBoundsException
②空指针异常:
NullPointerException
7.遍历数组两种方式:
①使用for循环,i代表数组的下标
for(int i=0;i<array.length;i++){}
②foreach(for循环的增强版)
for(定义变量接收数组的每一个元素值:要遍历的数组名)
for(int a:array){syso(a)}
8.数组分类
①基本数据类型的数组
byte short int long double float char boolean
0 0 0 0 0.0 0.0 空格 false
②引用数据类型的数组
String 接口 自己定义的类…
引用数据类型的默认值为null
9.java中的内存是怎么进行分配的?
内存的申请和释放都是jvm进行管理的,java程序要运行,jvm会自动的向电脑申请一块内存,把这块内存分为五部分
①栈( Stack) :主要存放局部变量
②堆(Heap):凡是new出来的东西都在堆里面,堆中的数据都有默认原则
③方法区(MethodArea):存放的是与.class文件相关的信息
④本地方法区(NativeMethodArea):与操作系统有关
⑤寄存器( Register) ::与cpu有关.
10.冒泡排序(重点)
核心思想:数组中的元素两两比较
口诀(升序)
n个数字来排队
两两相比小靠前
外层循环n-1
内存循环n-1-i
//从小到大
int[] array={};
//外层循环控制趟数
for(int i=0;i<array.length-1;i++){
//内层控制次数
for(int j=0;j<array.length-i-1;j++){
//比较从大到小用< 小到大用>
if(array[j]<array[j+1]){
int temp=array[j];
array[j]=array[j+1]
array[j+1]=temp;
}
}
}
选择排序(了解):效率较低
11.二维数组:数组中的数组
①声明二维数组:
数据类型[][] 数组名;
第一个中括号:二维数组中有几个一维数组 行
第二个中括号:每个一维数组中有多少元素 列
12.初始化二维数组
第一种动态初始化
int[][] array=new int[5][7];
array[0][0]=10;
int [][] arr =new int[3][];//二位数组中有3个一维数组。
int[][] arr = new int[][3];//非法
第二种静态初始化
int[][] array1=new int[][]{数据集合1,数据集合2}
简写
int [][] array2={ };
获取二维数组的长度:.length
13.遍历二维数组
外层循环控制行(每一个一维数组)
for(int i=0;i<array.length;i++){
内层循环控制的是列
for(int j=0;j<array[i].length;j++){
syso array[i][j]
}
}