5.Java数组

5.Java数组

5.1数组概述

数组,相同数据类型的元素的线性集合;

基本类型不是对象,当时基本类型组成的数组是对象;

5.2一维数组

在使用一维数组之前,需要先 声明、分配内存、初始化

1.声明

数组元素类型 数组名[];

数组元素类型[] 数组名;

 int day[];
 int[] month;

点击并拖拽以移动

2分配内存

数组名=new 数组元素类型[数组元素个数];

day=new int[10];

点击并拖拽以移动

使用关键字new时,必须指定数组元素类型和数组长度(直接创建数组并初始化时可以不直接说明长度,但数组长度已确定);

ps:数组声明和分配内存可同时进行:

 int year[]=new int [10];

点击并拖拽以移动

3.初始化

已经创建、分配内存的数组可以通过下标给数组元素赋值

另外还有2种语句可以直接在创建数组的同时直接初始化数组:

String food[]=new String[]{"chicken","hot dog"};
String children[]= {"boys","girls"};

点击并拖拽以移动

ps:直接创建并初始化数组时,不可以指定数组长度

数组在分配内存后大小已经固定,数组扩容只能创建数组的副本

array.length是一个常量,在数组初始化后不可变

5.3二维数组

1.声明,而后分配内存,再按下标初始化(初始化过程略)
int arr1[][];
arr1=new int[3][10];

点击并拖拽以移动

2.声明的同时分配内存,而后初始化
 int arr5[][]=new int[2][3];
 arr5=new int[][] {{1,2,3},{4,5,6}};

点击并拖拽以移动

3.创建同时初始化二维数组
int arr3[][]=new int[][] {{1,2,3},{4,5}};
int arr4[][]= {{1,2,3},{4,5,6}};
//此时不可指定数组维度大小,第一维、第二维都不可

点击并拖拽以移动

ps:二维数组的第二维长度可不一致

int[][] arr2;
arr2=new int[3][];
arr2[0]=new int[] {1,2,3,4,5,6,7};
//按行初始化
arr2[1]=new int[4];

点击并拖拽以移动

5.4数组的基本操作

1.遍历数组
int Arr[][] = { { 1, 2, 3 }, { 4, 5, 6 } };
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();
}

点击并拖拽以移动

使用foreach语句时遍历会更加简单

int Arr[][] = { { 1, 2, 3 }, { 4, 5, 6 } };
for(int a[]:Arr) {
    for(int b:a) {
        System.out.print(b);
    }
    System.out.println();
}

点击并拖拽以移动

2.复制数组

错误示范:

int arr1[]= {1,2,3,4,5};
int arr2[]=arr1;
//arr1在内存中是一个变量,指向数组元素的地址;而数组元素在内存中是一些常量
//将arr1赋值给arr2,仅仅是让arr2和arr1指向同一块区域,两者还是同一个数组,此时修改arr1,arr2也会改变

点击并拖拽以移动

两种复制数组的方法:

此时应调用Arrays类的copyOf()方法和copyOfRange()fang方法

(1)copyOf(arr,int newlength)

newlengh大于原数组长度时,新数组自动补0

(2)copyOfRange(arr,int formIndex,int toIndex)

formIndex指定开始复制数组位置,需要在0至整个数组长度之间

toIndex指定复制范围最后索引位置,可以大于arr数组长度,新数组不包含索引是toIndex的元素

int arr1[]= {1,2,3,4,5};
int arr2[]=Arrays.copyOf(arr1, 4);
int arr3[]=Arrays.copyOfRange( arr1, 0, 8);

点击并拖拽以移动

3.填充替换数组元素

填充: fill(arr,value)

int arr1[]=new int[5];
Arrays.fill(arr1,8);

点击并拖拽以移动

替换:fill(arr,int formIndex,int toIndex,value)

将formIndex到toIndex之间的元素用value替换,不包换toIndex,toIndex下标不可越界

int arr1[]=new int[5];
Arrays.fill(arr1, 1,3,0);

点击并拖拽以移动

4.排序

排序语法:Arrays.sort(object)
/String类按照字典顺序排序,数字最前,其次大写字母,最后小写字母

int arr[]=new int[]{23,42,12,8};
Arrays.sort(arr);

点击并拖拽以移动

5.数组查询

对数组排序后,可以采用二分搜索法来搜索指定数组元素

语法如下:

binarySearch(Object[] a,Object key)
binarySearch(Object[] a,`int fromIndex,int toIndex,Object key)
//包含fromIndex,不包含toIndex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值