数组
数组:是可以存储同一种类型的元素一种“容器”。(都是引用类型:默认值为null)
注意:必须要保证该容器中储存的类型必须一致!
数组的定义:
数据类型[] 数组名称;
举例:int[] arr 定义了一个int数组的变量arr
数据类型 数组名称[];
举例:int arr[] 定义了一个int类型的变量arr数组
数组的初始化(两种):
- 动态初始化:开发者定义数组初始化的时候,指定数组的长度,系统默认给数组中的元素赋值;
-
数据类型[] 数组名称 = new 数据类型[ 数组长度 ];
-
数据类型 数组名称[] = new 数据类型[ 数组长度 ];
-
静态初始化:直接指定数组的元素内容,系统指定的数组长度!
数组静态化格式:
-
数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,元素3……};
-
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3……};
例子:int[] arr = new int[1,2,3];
简写方式:(推荐)
-
数据类型[] 数组名称 = {元素1,元素2,元素3……};
-
数据类型 数组名称[] = {元素1,元素2,元素3……};
例子:int[] arr = {1,2,3};
数组异常
数组中会遇见的一些异常:
异常:Throwable 类
异常分为两大类:
Error:程序出现了严重的问题;
Exception:
RuntimeException:运行时期异常
java.lang.ArrayIndexOutOfBoundsException属于运行时期异常的一种
java.lang.NullPointerException属于运行时期异常的一种
编译时期异常(只要不是RuntimeException的异常都属于编译时期)
java.lang.ArrayIndexOutOfBoundsException:属于运行时期异常的一种
数组角标越界异常
出现的原因:访问了数组中不存在的角标值
解决方案:更改角标在范围内即可!
java.lang.NullPointerException:空指针异常(引用类型中经常会出现的异常!)
出现的原因:
代码结构不严谨(某个对象已经为null,还有使用这个对象调用方法或者访问元素...)
解决方案:
只要 给对该对象进行非空判断
如果该对象不为空,才能使用这个对象完成一些操作!
二维数组
二维数组:就是元素为一维数组的数组
定义格式:
- 数据类型[] 数组名称[];
- 数据类型[][] 数组名称;
1.动态初始化:
格式1:
数据类型[][] 数组名称 = new 数据类型[m][n];
举例:
int[][] arr = new int[3][2];
- =号左边:
int:当前数组储存的是int类型的元素
[][]:定义的是一个二维数组
arr:数组对象名称对象 - =号右边:
new :在堆内存中创建该数组的对象(产生堆内存空间地址)
int:当前数组存储的是int类型的元素
[3]:当前定义的这个二维数组中有3个一维数组
[2]:每一个一维数组中有2个长度
注意:
在一些笔试题:定义变量 进行初始化
int x, y ; x 和y是两个int类型的变量
int x [],y[] ;x和y都是int类型的数组
int x[][],y[] ; x是一个二维数组,y是一个一维数组
冒泡排序的思想
概念:两两比较,大的值往后放,第一次比较完之后,最大值就出现在最大索引处,依次这样比较,就可以得到一个排好序的数组!
冒泡排序比较规律:
1)两两比较,如果前面的元素比后面的元素大,往后放第一次比较完毕后,最大值出现在最大索引处,依次这样比较……;
2)第一次比较,有0个不比, 第二次比较,有1个不比 第三个比较,有2个不比 ……规律:两两比较,较大的值往后放总共比较的次数:数组长度-1次
自定义指定一个数组(没有明确都是一维数组),然后将数组进行冒泡排序并遍历(按照[元素1, 元素2,元素3, ...])
public class ArrayDemo{
public static void main(String[] args){
//定义一个数组,静态初始化
int[] arr = {34,67,23,90,13,78};
//冒泡前的数组
System.out.println("冒泡前的数组:");
bianLi(arr);
//冒泡后的数组
System.out.println("冒泡后的数组:"+arr);
maoPao(arr);
bianLi(arr);
System.out.println(arr);
}
//遍历
public static void bianLi(int[] arr){
System.out.print("[");
for(int i = 0 ; i < arr.length ; i++){
if(arr.length-1 == i){
System.out.print(arr[i] + "]");
}else{
System.out.print(arr[i] + ",");
}
}
}
//冒泡排序
public static void maoPao(int[] arr){
for(int i = 0 ; i < arr.length ; i++){
for(int x = 0; x <arr.length-1-i; x++){
if(arr[x] >arr[x+1]){
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
}
}
}