JAVA数组

一,数组的基本概念

数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。

二,数组的创立和初始化

数组的创立有三种方式:

int [] arr1= new int[10];
int [] arr2= new int[]{1,2,3,4};
int [] arr3= {1,2,3,4};

(1)静态初始化虽然没有确定[ ]数组的长度,但是编译器会根据{ }中的元素来确定数组的长度

(2)静态初始化时,{ }中的数据类型要与[ ]前的数据类型相同

引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该 地址,引用变量便可以去操作对象。

没有初始化的数组,里面的默认值为0(boolean的默认值为false)。用来存地址的的变量简称为引用变量,arr简称为引用。

三,数组的使用

(1)System.out.println(arr2);---->[I@4eec7777

“[”代表数组,“I”代表类型,为整型,“4eec7777”为经过处理的地址

(2)可通过下标访问数组中的数值,System.out.println(arr2[2]);

(3)遍历数组:

法一:

int [] arr2= new int[]{1,2,3,4};
for (int i = 0; i < arr2.length; i++) {
    System.out.print(arr2[i]+" ");

}
System.out.println();

法二(for each):

for(int x :arr2){
    System.out.print(x+" ");
}

法三:借助java原生方法

String ret=Arrays.toString(arr2);
System.out.println(ret);

(4)参数传数组类型

public static int[]func(int [] array){
    int []tmp=new int[array.length];
    for (int i = 0; i < array.length; i++) {
        tmp[i]=array[i]*2;
    }return tmp;
}
public static void main(String[] args) {

        int[]array={1,2,3,4};
        int[]retArray=func(array);
        String ret=Arrays.toString(retArray);
        System.out.println(ret);

(5),排序

int [] arr= new int[]{1,5,3,7};
Arrays.sort(arr);
String ret=Arrays.toString(arr);
System.out.println(ret);//[1, 3, 5, 7]
数组下标为(2,6]进行排序
int [] arr= new int[]{1,5,3,7,6,23,2};
Arrays.sort(arr,2,6);//[1, 5, 3, 6, 7, 23, 2]

(6)查找数字

int [] arr1= new int[]{1,5,3,7,6,23,2};
System.out.println(Arrays.binarySearch(arr1, 5));arr1数组中要查找的数字5
->1

(7)复制

int []arr2=Arrays.copyOf(arr,arr.length);
int []arr3=Arrays.copyOf(arr,arr.length*2);这种写法可为数组扩容
String ret=Arrays.toString(arr2);
String ret1=Arrays.toString(arr3);
System.out.println(ret);[1, 5, 3, 7, 6, 23, 2]
System.out.println(ret1);[1, 5, 3, 7, 6, 23, 2, 0, 0, 0, 0, 0, 0, 0]
int [] arr= new int[]{1,5,3,7,6,23,2};
int []arr4=Arrays.copyOfRange(arr,1,4);在(1,4]范围内进行复制
String ret=Arrays.toString(arr4);
System.out.println(ret);[5, 3, 7]

(8)两数组是否相同

int [] arr1= new int[]{1,5,3,7,6,23,2};
int [] arr3= new int[]{1,5,3,7,6,23,2};
int [] arr2= new int[]{2,5,3,9,6,4,7};
System.out.println(Arrays.equals(arr1, arr2));false
System.out.println(Arrays.equals(arr1, arr3));true

(9)填充

int [] arr1= new int[]{1,5,3,7,6,23,2};
Arrays.fill(arr1,2,4,99);arr1数组,从下标2到下标4,之间的数据改为99
String ret=Arrays.toString(arr1);
System.out.println(ret);[1, 5, 99, 99, 6, 23, 2]

四,二维数组

必须标清楚几行几列

初始化:

int[][]arr=new int [4][5];
int[][]arr2= {{1, 2, 3}, {2, 3, 4}};
int[][]arr3=new int [][]{{1, 2, 3}, {2, 3, 4}};

遍历数组:

int[][]arr=new int [][]{{1, 2, 3}, {2, 3, 4}};
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j]);
    }
    System.out.println();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值