Java数组的优势和局限_JavaSE基础知识(4)—数组的应用

一、数组的特点、好处及使用步骤

1、数组的好处

特点:相当于用于保存一组元素的容器

好处:

1、提高代码的简洁性和扩展性,且同时开辟多个空间,提高了效率

2、分类存储,且空间是连续的,容易查找

2、数组的特点

1、数组存储的是相同类型的一组元素

double[] arr = {1.6,2.3,1,2,'a'};

2、数组的定义类型可以是任意类型,包含基本类型或引用类型

String[] arr = {"john","lucy"};

Person[] arr;

int[][] arr;

Person[][] arr;

3、数组本身也属于引用类型,内存的分配和基本类型不同

基本类型:值和变量名都存储在栈中

引用类型:值存储在堆中,变量名存储在栈中

值又称为对象,值中每个元素称为成员

变量名又称为数组名或对象名或引用名

3、数组的四要素

数据类型:任意类型[]

数组名

值(对象)

★下标 :从0开始

注意:访问某个具体的成员,需要通过:数组名[下标]的方式!

4、数组的使用步骤★

(1)数组的动态初始化

(1)声明

数据类型[] 数组名;或

数据类型 数组名[];

(2)开辟空间

数组名 = new 数据类型[长度];//长度必不可少

(3)手动赋值

数组名[下标] = 值;

(4)使用(打印、运算、判断等)

System.out.println(数组名[下标]);

(2)数组的静态初始化

(1)声明并初始化

数据类型[] 数组名 = new 数据类型[]{值,值,值};

或 数据类型[] 数组名 = {值,值,值};

int[] arr = {3,4,5,6,100};

int[] arr2 = new int[] {3,4,5,6,100};

(2)使用

for(int i=0;i

//每一个元素表示为:数组名[i]

}

(3)注意事项

①数组的元素如果不赋值,也有默认值

int0

double 0.0

char \u0000

boolean false

引用类型 null

②访问数组的元素时,下标必须在0—长度-1 的范围内,否则报数组下标越界的异常

③数组的长度,可以通过 数组名.length表示,提高代码的维护性

④数组的赋值和使用,往往可以通过搭配for循环一起操作

for(int i=0;i

//每一个元素表示为:数组名[i]

}

二、数组的基本及高级使用

功能

代码

功能

代码

基本使用

正序打印

for(int i=0;i

System.out.println(arr[i]);

}

倒序打印

for(int i=arr.length-1;i>=0;i--){

System.out.println(arr[i]);

}

求和、求平均

int sum = 0;for(int i=0;i

sum+=arr[i];

}

和:sum

平均值:sum/arr.length

查找

int index=-1;for(int i=0;i

index=i;break;

}

}if(index==-1){//没找到}else{找到了}

求最值

int max = arr[0];int indexMax = 0;int min = arr[0];int indexMin = 0;for(int i=1;imax){

max=arr[i];

indexMax=i;

}if(arr[i]

min=arr[i];

indexMin=i;

}

}

最大值:max

最小值:min

排序(冒泡)

for(int i=0;iarr[j+1]){int t =arr[j];

arr[j]= arr[j+1];

arr[j+1]=t;

}

}

复杂使用

赋值(传统方式=arr)

newArr = arr;

循环赋值

①创建新数组,长度=旧数组.lengthint[] newArr = new int[arr.length];

②循环将旧数组的元素依次赋值给新数组的每个成员for(int i=0;i

newArr[i]=arr[i];

}

反转(方式1)

for(int i=0;i

arr[i] vs arr[arr.length-1-i]

}

反转(方式2)

①创建新数组,长度=旧数组.lengthint[] newArr = new int[arr.length];

②循环赋值for(int i=0,j=arr.length-1;i

newArr[i]=arr[j];

}

③将新数组的地址赋值给旧数组

arr= newArr;

高级使用

追加元素

假如待添加的元素:add

①创建一个新数组,长度为 arr.length+1

int[] tempArr = new int[arr.length+1];

②循环赋值(将arr的元素依次赋值给tempArr)for(int i=0;i

tempArr[i]=arr[i];

}

补充:前两步可以使用int[] tempArr=Arrays.copyOf(arr,arr.length+1);代替

③将add添加到最后一个空位上

tempArr[tempArr.length-1] =add;

④将tempArr的地址赋值给arr

arr= tempArr;

插入元素

待添加的元素:add

待插入的位置:index

①创建一个新数组,长度为 arr.length+1

int[] tempArr = new int[arr.length+1];

②循环赋值(将arr的元素依次赋值给tempArr)for(int i=0;i

tempArr[i]=arr[i];

}

补充:前两步可以使用int[] tempArr=Arrays.copyOf(arr,arr.length+1);代替

③循环后移for(int i=tempArr.length-1;i>index;i--){

tempArr[i]= tempArr[i-1];

}

④将add添加到index上

tempArr[index]=add;

⑤将tempArr的地址赋值给arr

arr=tempArr;

System.out.println("插入成功!");

三、二维数组

1、理解

二维数组本身也属于引用类型,保存的也是地址号

二维数组用于保存多个一维数组的容器,相当于多个一维数组的组合,即二维数组中的每个元素又是一个一维数组

2、数组的使用步骤

(1)动态初始化

(1)声明

数据类型[][] 数组名;

数据类型[] 数组名[];

数据类型 数组名[][];

(2)开辟空间

格式一:固定列数

数组名 = new 数据类型[行数][列数];//行数相当于二维数组的长度或一维数组的个数,列数相当于每个一维数组中的成员个数

格式二:不固定列数

数组名 = new 数据类型[行数][];

前两步可以合二为一

语法示例:

int[][] arr = new int[5][];

(3)赋值

格式一:固定列数

for(int i=0;i

for(int j=0;j

数组名[i][j] = 值;

}

}

格式二:不固定列数

for(int i=0;i

数组名[i]=new 数据类型[长度];//长度不能省略!

for(int j=0;j

数组名[i][j] = 值;

}

}

(4)使用

for(int i=0;i

for(int j=0;j

System.out.println(数组名[i][j]);

}

}

(2)静态初始化

(1)声明并初始化

数据类型[][] 数组名 ={{值,值},{值,值,值}};或

数据类型[][] 数组名 =new 数据类型[][]{{值,值},{值,值,值}};

(2)使用

for(int i=0;i

for(int j=0;j

System.out.println(数组名[i][j]);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值