Java Array

Java Array

一、简介

1、概念

Java 语言中提供的数组是用来存储固定大小的同类型基本数据类型/引用数据类型)元素。

数组本身是引用类型。

数组是同一种数据类型的集合

数组中的每个数据称为数组元素,按从0~数据个数-1索引/下标来访问每个元素

2、数组的好处

  1. 当数据量大时,可以 同时开辟多个空间,语句更加简洁,且提高效率

  2. 数组中的空间都是连续的,便于查找

  3. 对于处理数据(增,删,查,改)非常便利

3、特点

  • 数组中保存引用类型时保存的是对象引用,基本数据类型数组保存基本数据的值。

  • 数组的length只表示数组能够容纳多少元素,不能保存实际保存的元素个数。

  • 数组的长度是固定的, 只可以存储固定个数的数据 。

二、数组的创建

  1. 声明数组的两种方式

int a [];

int [] a;

在Java中两种声明方式效果相同,但是尽量使用第二种(int [] a),以避免混淆数据类型

见代码:

int[] a= new int[5],    //推荐   数组a
	  b=new int[5],		//      数组b
      c=new int[20];    //      数组c

int x[],            //易混淆  数组    :  x
y,z;                //      数值,数值 : y  z
  1. 数组创建的三种方式
int [] b=new int[5];//1.声明数组同时,根据指定长度分配内存,此处所有元素都初始化为默认值(0)

int [] c=new int[]{1,2,3,4,5};//2.声明数组,分配内存,同时将其初始化

int [] a={1,2,3,4,5};//3.直接对数组初始化赋值,与2方式相同

这里的2,3都是静态创建,直接为其赋值初始化

1是动态创建,只为其分配内存,而不初始化,可搭配for或while为其赋值

int [] a=new int[10];//动态创建,分配指定内存
for(int i=0;i<a.length;i++){//数组的下标从0开始到length-1,这里的length=10-1=9
	a[i]=i+7;//将7的倍数赋给每个元素
}

三、数组的访问与迭代

数组的访问通过下标/索引来进行

a[0];//第一个元素
a[1][2];//二维数组中第二行,第三列对应的元素

注意:

  • 数组的索引0开始。

  • 索引的数据类型是整型

  • 索引最大值和数组长度始终差1

数组的访问方式

1、for循环

int [] a=new int[10];//动态创建,分配指定内存
for(int i=0;i<a.length;i++){//数组的下标从0开始到length-1,这里的length=10-1=9
	a[i]=i+7;//将7的倍数赋给每个元素
}
for(int i=0;i<a.length;i++){//数组的下标从0开始到length-1,这里的length=10-1=9
	System.out.println(a[i]);//访问每个数组元素
}

2、foreach

foreach 也称增强for循环

/*
foreach:
for([数据类型] 变量名 : 数组名 ){
//变量的数据类型字节可以比数组存储的数据类型字节大,但不能小
     System.out.println(变量名);
}
遍历一维数组每个元素
将值赋给临时变量
输出每个临时变量
*/
int [] a=new int[5];
for(double temp:a){//double>int 合法
    System.out.println(temp);//访问每个数组元素
}
double [] b=new double[5];
for(int y:b){
/*
int< double 报错:
Required type:double
Provided:int
*/
    System.out.println(y);
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rd7hkTXG-1618364616716)(img/p1.jpg)]

四、二维数组

二维数组:{{1,2,3},{4,5,6},{7,8,9}}

二维数组的本质是一维数组,每个元素都是一个一维数组

1.二维数组的声明

int [][] a;
int b[][];
//与一维数组一样,这里依旧推荐int[][] a这种写法
//a[行下标][列下标] a[1][2]-->第2行第3列的元素

2.二维数组的创建

int [][] a=new int[3][3];//分配3行3列的内存,默认初始化为0
int [][] c=new int[][]{{1,2,3},{4,5,6}};//静态赋值初始化为2行3列
int [][] b={{1,2,3},{4,5,6}};//静态赋值初始化为2行3列

使用for循环对二位数组进行初始化

int [][] a=new int[5][5];//动态创建一个5行5列数组
for(int i=0;i<a.length;i++){//从行下标开始,0~length-1
    for (int j = 0; j < a[i].length; j++) {//a[i].length=每一行对应的列数长度
    	a[i][j]=i+j;//将索引之和赋给相应元素
    }
}

3.二维数组的访问

int [][] a=new int[5][5];//动态创建一个5行5列数组
for(int i=0;i<a.length;i++){//从行下标开始,0~length-1
    for (int j = 0; j < a[i].length; j++) {//a[i].length=每一行对应的列数长度
    	a[i][j]=i+j;
    }
}
//for循环遍历
for(int i=0;i<a.length;i++){
    for (int j = 0; j <a[i].length ; j++) {
        System.out.print(a[i][j]+"\t");
    }
    System.out.println();
}
System.out.println();
//foreach遍历
for (int[] x:a){
    //将二维数组a的每个元素({1,2,3,4,5},本质是一维数组)拿出赋给一维数组x
    for(int y:x){//遍历一维数组x中每个元素,赋给变量y
        System.out.print(y+"\t");//输出每个y
    }
    System.out.println();
}

运行结果:(一样)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jzj8mybL-1618364616721)(img/p2.jpg)]

for与foreach适用环境

  • foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高

  • 对于更复杂的循环,for更灵活

  • 用foreach时,只能对存储引用类型的数组修改,不能修改存储基本类型的数组
    本人新✋,初来乍到,:✒️此拙作以记录学习中的知识点滴,若能帮助到同在学习的新手,不甚荣幸.若有不对的地方,还请各位大佬斧正,不吝赐教🙏🙏🙏!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值