一、数组(引用类型)
a内部保存的内容是数组在堆空间的首地址
1.数组创建
类型[] 数组名=new 类型[N]
2.数组初始化
(1)动态初始化
int[] a=new int[10];
(2)静态初始化
int[] a=new int[]{1,2,3,4};
静态初始化,只有在定义时可以整体赋值,不能再次整体赋值
(3)静态初始化简写
int[] a={1,2,3};
不拆分写可以简写,要是拆分则不可以简写
#错误写法,编译失败
int[] a;
a={1,2,3};
3.打印数组
数组对象.length
(1)for循环
int[] a={1,2,3};
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
(2)for-each
int[] a={1,2,3};
for(int x:a){
System.out.print(x);
}
(3)使用工具类
int[] a={1,2,3};
System.out.print(Arrays.toString(a));
4.作为函数的参数
public static void main(String[] args){
int[] a={1,2};
func(a);
#此时a[0]是10
System.out.print(a[0]);
func1(a);
#此时a[0]的值不会改变
System.out.print(a[0]);
}
public static void func(int[] arr){
arr[0]=10;
}
public static void func1(int[] arr){
arr=new int[]{3,4};
}
5.数组转为字符串
int[] arr=new int[] {1,2,3};
String a=Arrarys.toString(arr);
#此时会输出[1,2,3]
6.数组拷贝
(1)for循环依次赋值
(2)拷贝整个数组
int[] a=Arrays.copyOf(arr,arr.length);
(3)拷贝部分数组
int[] a=Arrays.copyOf(arr,1,3);
(4)System.arrcopy(拷贝的数组,从哪里开始,拷贝到哪个数组,拷贝到哪个数组,从哪里开始接受,长度)
(5)
int[] a=b.clone();
7.查找数组指定元素(二分查找)
public static int binarySearch(int[] a,int find){
int left=0;
int right=a.length-1;
while(left<=right){
int mid=(left+right)/2;
if(a[mid]<find){
left=mid+1;
}else if(a[mid]>find){
right=mid-1;
}else{
return mid;
}
}
return -1;
}
8.数组逆序
public static void reverse(int[] a){
int left=0;
int right=a.length-1;
while(left<right){
int tmp=a[right];
a[right]=a[left];
a[left]=tmp;
left++;
right--;
}
}
9.二维数组打印
(1)for嵌套
public static void main(String[] args){
int[] a={{1,2,3},{4,5,6},{7,8,9}};
for(int row=0;row<a.length;row++){
for(int col=0;col<a[row].length;col++){
System.out.print(a[row][col]);
}
System.out.print("");
}
(2)for-each
for(int[] tmp:arr){
for(int x:tmp){
System.out.print(x);
}
System.out.print("");
}
(3)深度打印
#打印出[[1,2],[3,4]]
Arrays.deepToString(arr);