文章目录
Java语言基础
包含数组的定义,数组的初始化、数组的访问,数组的复制和扩展,数组的排序,冒泡排序原理。
一、数组的定义
什么是数组
相同数据类型的元素组成的集合,数组是一种数据类型(引用类型)。元素按线性顺序排序。所谓线性就是除第一个元素外,每个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(一个跟一个)
创建数组
int[] arr = new int[4];
//int[]:数组的类型,表示数组中的每一个元素都是int类型
//arr:数组类型变量(引用)
//int[4]:数组的长度,即数组中的元素个数
二、数组的初始化
基本类型的数组(数组元素为基本类型)创建后,其元素的初始值:byte,short,char,int,long为0;float和double为0.0;boolean为false
1)数组声明的同时进行初始化
int[] arr = {1,4,7}; //1,4,7
int[] arr;
arr = {1,2,3}; //编译错误,此方式只能声明的同时初始化
2)声明后,再初始化
int[] arr = new int[3]; //0,0,0
int[] arr = new int[]{1,2,3}; //1,2,3
arr = new int[]{1,2,3}; //正确
三、数组的访问
1)通过数组名.length可以获取数组的长度
int[] arr = new int[3];
System.out.println(arr.length); //3
2)通过索引/下标来访问数组中的元素。需要注意:数组的下标从0开始,最大到length-1
int[] arr = new int[3];
arr[0] = 100; //给第1个元素赋值为100
arr[1] = 200; //给第2个元素赋值为200
arr[2] = 300;
arr[3] = 400; //数组下标越界异常
System.out.println(arr[arr.length-1]); //输出arr的长度/个数
System.out.println(arr[arr.length-1]); //输出arr的长度/个数
四、数组的遍历
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = 100;
}
for(int i=0;i<arr.length;i++){ //正序
System.out.println(arr[i]);
}
for(int i=arr.length-1;i>=0;i--){ //倒序
System.out.println(arr[i]);
}
找最大值
1)假设第1个元素为最大值
int max = arr[0];
2)遍历剩余元素,将剩余元素与max做对比,若剩余元素大于max,修改max为较大的数
for(int i=1;i<arr.length;i++){
if(arr[i]>max){
max = arr[i];
}
}
找最小值
1)假设第1个元素为最小值
int min = arr[0];
2)遍历剩余元素,将剩余元素与max做对比,若剩余元素小于min,修改min为较小的数
for(int i=1;i<arr.length;i++){
if(arr[i]<min){
min = arr[i];
}
}
五、数组的复制
Arrays.copyOf方法
JDK提供对数组进行复制的方法,即将一个数组(源数组)中各个元素值复制到另外一个数组(目标数组)中
System.arraycopy(src, srcPos, dest, destPos, length);
System.arraycopy(a,1,a1,0,4);
//src-----要复制的源数组
//srcPos-----从源数组复制的起始位置
//dest-----要复制到的目标数组
//destPos-----复制到目标数组中的起始位置
//length-----要复制的元素个数
扩展
Arrays.copyOf方法:简便实现数组扩展
数组的长度在创建后不可改变。所谓扩展是指创建一个更长的数组并将源数组的内容复制过去
int[] arr = {13,32,33,45,95,16};
arr = Arrays.copyOf(arr, arr.length+1);
System.out.println(Arrays.toString(arr)); //扩展为7个元素,最后一个元素初始值为0,结果为[13, 32, 33, 45, 95, 16, 0]
六、数组的排序:
Arrays
JDK中的java.util.Arrays类提供对数组操作的一系列使用方法
Arrays.toString方法
Arrays.toString方法:用于字符串表示数组的元素
int[] arr1 = {1,2,3,4,5,6};
int[] arr2 = {1,2,3,4,5,6};
System.out.println(Arrays.toString(arr1)); //结果为[1, 2, 3, 4, 5, 6]
Arrays.equals方法
Arrays.equals方法:用于比较两个数组的各个元素是否相等
int[] arr1 = {1,2,3,4,5,6};
int[] arr2 = {1,2,3,4,5,6};
System.out.println(Arrays.equals(arr1, arr2)); //结果为true
Arrays.sort方法
Arrays.sort方法:用于实现数组的排序
int[] arr = {13,32,33,45,95,16};
String[] str = {"Apple","Pear","Banana","Strawbeery","Cherry","Fruit"};
Arrays.sort(arr);
Arrays.sort(str);
System.out.println(Arrays.toString(arr)); //按照数组大小顺序排序,结果为[13, 16, 32, 33, 45, 95]
System.out.println(Arrays.toString(str)); //按照字母顺序排序,结果为[Apple, Banana, Cherry, Fruit, Pear, Strawbeery]
Arrays.binarySearch方法
Arrays.binarySearch方法:用于实现有序数组的二分法查找
int[] arr = {13,32,33,45,95,16,13};
Arrays.sort(arr); //[13, 13, 16, 32, 33, 45, 95]
int index = Arrays.binarySearch(arr, 33); //返回数组下标
System.out.println(index); //结果为4
index = Arrays.binarySearch(arr, 0);
System.out.println(index); //找不到时,返回一个负数,结果为-1
index = Arrays.binarySearch(arr, 13);
System.out.println(index); //有多个相等元素是随机返回其中一个值的下标
冒泡排序
冒泡的工作原理:
1)4个数冒三轮
2)每一轮都是从第1个元素开始冒,每一次都是和它的下一个元素比
3)冒出来的数就不带它玩了
经典案例:数组的冒泡排序