Java 数组

一、数组的特点和好处

1、 数组的特点

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

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

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

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

3、数组属于引用类型,引用存储在栈中,值存储在堆中,又称为对象。

image-20210206113757699

4、数组的成员如果不赋值,有默认值。

byte/short/int/long——>0
float/double——>0.0
char——>\u0000
boolean——>false
String——>null

5、数组的四要素

数据类型、标识符、元素、下标(0------数组名.length-1)

2、 数组的好处

说明:相当于用于保存一组元素的容器

好处:

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

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

二、数组的语法和使用步骤

1、 动态初始化

针对题型:声明时不确定值是什么

步骤1、声明

数据类型[] 数组名;或

数据类型 数组名[];

步骤2、开辟空间

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

步骤3、赋值

方式一:一个个赋值

数组名[下标] = 值;

方式二:循环赋值

for(int i=0;i<数组名.length;i++){

数组名[i] = 值;

}

步骤4、使用

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

2、 静态初始化

针对题型:声明时就知道值是什么

步骤1、声明并初始化

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

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

步骤2、使用

3、 使用注意事项

①数组的下标:0------arr.length-1,如果超出范围,则报ArrayIndexOutOfBoundsException

②数组的成员如果不手动赋值,也有默认值

int------0

double------0.0

char------\u0000

boolean------false

引用类型------null

三、数组的使用

1、 正序打印

for(int i=0;i<arr.length;i++){
   System.out.println(arr[i]);
}

2、逆序打印

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

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

3、 求和、平均值

int sum = 0;
for(int i=0;i<arr.length;i++){
  sum+=arr[i];
}
sum:和  aum/arr.length平均值

4、 求最值

int max = arr[0];
int indexMax = 0;
int min = arr[0];
int indexMin = 0;

for(int i=1;i<arr.length;i++){
   if(arr[i]>max){
     max = arr[i];
     indexMax = i;
   }
   if(arr[i]<min){
     min = arr[i];
     indexMin = i;
    }
}
max:最大值
min:最小值

5、 查找

int index=-1;
for(int i=0;i<arr.length;i++){

  if(arr[i]==带查找的元素){
       index = i;
       break;
   }

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

6、 排序

for(int i=0;i<arr.length-1;i++){
  for(int j=0;j<arr.length-1-i;j++){

     if(arr[j]>arr[j+1]){
       int t = arr[j];
       arr[j] = arr[j+1];
       arr[j+1]=t;
  }}

7、赋值

特点:

基本类型变量的赋值:赋的是值,其中一个更改不影响另外一个

引用类型变量的赋值:赋的是地址,二者共同引用一个空间,其中一个更改影响另外一个

如果希望赋的是值(内容),则可以采用循环赋值

方式一:传统的使用 = 赋值

newArr = arr;

方式二:循环赋值

①创建新数组,长度=旧数组.length

int[] newArr = new int[arr.length];

②循环将旧数组的元素依次赋值给新数组的每个成员

for(int i=0;i<newArr.length;i++){
	newArr[i] = arr[i];
 }

四、二维数组

1、特点

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

二维数组相当于多个一维数组的组合,也就是二维数组中的每个元素又是一个一维数组

2、使用步骤

(1)动态初始化

步骤1 :声明

格式1:数据类型[][] 数组名;

格式2:数据类型[] 数组名[];

格式3:数据类型 数组名[][];

步骤2:开辟空间

格式1:固定列数

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

格式2:不固定列数

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

前两步可以合二为一

语法示例:

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

步骤3:赋值

格式1:固定列数

for(int i=0;i<数组名.length;i++){
   for(int j=0;j<数组名[i].length;j++){
     数组名[i][j] =;
  }
}

格式2:不固定列数

for(int i=0;i<数组名.length;i++){
   数组名[i]=new 数据类型[长度];//长度不能省略!
   for(int j=0;j<数组名[i].length;j++){
     数组名[i][j] =;
  }

}

步骤4、使用

for(int i=0;i<数组名.length;i++){
   for(int j=0;j<数组名[i].length;j++){
     System.out.println(数组名[i][j]);
  }
}
(2)静态初始化

步骤1、声明并初始化

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

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

步骤2、使用

for(int i=0;i<数组名.length;i++){
   for(int j=0;j<数组名[i].length;j++){
     System.out.println(数组名[i][j]);
  }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值