Java数组总结
本人正在学习Java语法,技术力尚小,且本文为对书的个人理解,如有错误欢迎各位在评论区指正。
1.数组的声明与创建
1.1一维数组的声明与创建
//声明数组
int a[];
int[] a;
//创建数组并分配内存
a = new a[10];
//声明的同时并创建数组
int b[] = new int[10];
1.new关键字用于进行内存分配
2.整型数组中各元素初始值为0
1.2初始化数组
初始化数组有两种方式
int a[] = new int[]{1,2,3,4};
int b[] = {1,2,3,4};
1.3二维数组的内存分配
二维数组的内存分配有两种方式
//创建方式一
a = new int[2][4];
//创建方式二
b = new int[2];
b[0] = new int[2];
b[1] = new int[3];
两者的区别:
1.前者为同时为每一维分配内存空间,后者为先指定最左边的内容,再以此为每一维分配内存空间。
2.前者创建数组数为积,后者为和。
1.4二维数组的初始化
//初始化赋值
int a[][] = {{0,1},{2,3}};
//直接赋值
a[1][1] = 10;
2.数组的基本操作
2.1遍历数组
//以二维数组为例
public static void main(String[] args){
int b[][] = new int[][]{{1},{2,3},{4,5,6}};
for(int x[] : b){
for(int e : x){
System.out.print(e);
}
System.out.println();
}
}
2.2替换数组元素
方法名:fill()
重载数:2
//替换数组元素
fill(int[] a,int fromIndex,int toIndex,int value)
//示例代码
int a[] = new int[]{1,2,3,0};
Arrays.fill(a,1,2,4); //a数组变为{1,4,4,0}
注1.起止位置的关系为[fromIndex,toIndex)
注2.使用fill()方法需要引入java.util.Arrays库
2.3数组排序
方法名:sort()
//对数组升序排序
//代码略
注1:数据数据类型可以为任意类型
注2:排序顺序为unicode值
2.4复制数组
方法名1:copyOf()
方法名2:copyOfRange()
//复制数组至指定长度
copyOf(arr,int newlength)
//示例代码
int arr[] = new int[]{23,42,12};
int newarr[] = Arrays.copyOf(arr, 5);
注:newlength为复制后新数组的长度。如果newlength大于arr.length()整型数组用0填充,char型数组则使用null来填充,否则截取到newlength位置
//复制指定数组的指定长度
copyOfRange(arr,int fromIndex,int inIndex)
//示例代码
int arr[] = new int[]{23,42,12};
int newarr[] = Arrays.copyOfRange(arr, 0, 3);
注:[fromIndex, inIndex)
2.5数组查询
方法名:binarySearch()
//返回搜索元素的索引值
binarySearch(Object[] a, fromIndex, toIndex, Object key)
//示例代码
int arr[] = new int[]{4, 25, 10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr, 0, 1, 8);
注1:fromIndex,toIndex可省略,取值为[fromIndex, toIndex)
注2:该方法实现算法为二分法,故在使用前需要先使用sort()方法排序
注3:如果指定范围内不存在搜索元素,则返回值为-(low+1),其中low是假设存在的下标
2.6数组排序算法
1.冒泡排序
public class BubbleSort{
public static void main(String[] args){
int[] array = new int[]{63, 4, 24, 1, 3, 15};
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array.length - i; j++){
if(array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
}
2.选择排序
public class BubbleSort{
public static void main(String[] args){
int[] array = new int[]{63, 4, 24, 1, 3, 15};
int index;
for(int i = 0; i < array.length; i++){
index = 0;
for(int j = 0; j < array.length - i; j++){
if(array[j] > array[index]){
index = i;
}
}
int temp = array[array.length - i];
array[array.length - i] = array[index];
array[index] = temp;
}
}
}
3.反转排序
算法思想:第一个与最后一个元素互换
public class BubbleSort{
public static void main(String[] args){
int[] array = new int[]{63, 4, 24, 1, 3, 15};
int temp;
for(int i = 0; i < array.length/2; i++){
temp = array[i];
array[i] = array[array.length -1 -i];
array[array.length -1 -i] = temp;
}
}
}