星空网 > 软件开发 > Java

[Java入门笔记] Java语言基础(五):数组

简介

数组可用用于存储存储多个数据,Java的数组要求所有的数组元素具有一种相同的数据类型。一旦数组初始化完成,数组在内存中的空间被固定下来,长度不可改变,即使把数组的元素清空,所占用的空间依然被保留。

生活案例:博物架
[Java入门笔记] Java语言基础(五):数组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

使用数组4步走:

1、声明数组

Java中支持两种格式的数组定义格式:
类型[] 变量名;类型 变量名[];

 例:

int[] a;int b[]; //两种方法都行,不过建议使用第一种。

 


声明数组也就相当于上面例子中购买了一个定制的物品架(数组)到博物馆中,但是还没有确定物品架的大小(数组的大小),也还没有往物品架上放东西(数组元素)。

2、分配空间

 分配空间也就是对数组进行初始化,初始化分为两种方式:

第一种:静态初始化

静态初始化的语法格式如下:
数据类型[] 变量名 = new 数据类型[]{数据1, 数据2,数据3,......};

 例:

int[] a = new int[]{4,2,64,12,3}; //将这些数存放在数组中,数组的大小(长度)为花括号中元素的数量,该例子中大小为5String[] b = new String[]{"张三", "李四", "王五"}; //所有数据的类型必须为定义的数据类型int[] c = {2,5,7}; //也可以使用这样的简写方式

 


这就如同购买一个定制的物品架回来,同时将展示品放到物品架中一起购买回来,而物品架的大小就有多少物品就就有多大。

第二种:动态初始化

动态初始化是只指定数组的大小,由系统为每个元素指定初始值得一种方式。语法格式如下:

数据类型[] 变量名 = new 数据类型[大小];

 

在这个格式中, 需要为其指定一个整数类型的数组大小,指定后,将确定数据的长度,数组能够存放多少元素。同时为所有元素指定一个默认初始值。

例:

int[] a = new int[5]; //定义一个数组,长度为5,也就是说,能够存放5个int类型的数据,同时,默认5个值初始化为0

 

初始化时默认值按以下规定设置:

  • byte,short,int、long默认为0;
  • float、double默认为0.0;
  • char默认为'\u0000';
  • boolean默认为false;
  • 其他引用类型默认为null;

3、赋值

 尽管你已经初始化好了数组,但是我们还是可以通过通过赋值的方式改变里面的数据。那么已经初始化好了数组,确定了数组的大小,我们该如何为没一个数组元素赋值呢?
数组中还有一个下标的概念,数组初始化的时候,会为每个元素分配一个下标,就和物品展示架上的编号一样,我们可以通过下标为每个元素重新赋值。
数组的下标从0开始,也就是说,第一个元素的下标为0,至于为什么要从0开始,我们后面再探讨一下,我们先看看赋值的例子:
int[] a = new int[3]; //定义一个长度为3的int类型数组,里面3个元素值已默认为0;a[0] = 4; //设置第一个元素值为4a[1] = 5; //设置第二个元素值为5a[2] = 7; //设置第三个元素值为7

 [Java入门笔记] Java语言基础(五):数组

为什么数组下标从0开始?

首先我们需要知道的是,程序是在电脑内存中运行的,当我们的程序开始处理数据时,会在内存中开辟一个小小的空间用来存储数据,在代码中也就是定义一个变量,如:

int a = 5;

 

定义一个int类型变量,值为五,而在内存中表示为,在内存中分配一小块内存,命名为a,里面存的值为5。

[Java入门笔记] Java语言基础(五):数组

而我们是如通过a这样一个变量名得到内存中的值得呢?是因为每一小块内存都会有一个地址,就如同我们居住的家有一个地址一样,通过这个地址,通过这个地址,就能知道里面住的是谁。

二数组在内存中是以相连的位置存储的,方便对数组的操作,我们看一个例子:

int[] b = new int[3]; //定义一个int类型的数组,长度为3,里面的元素默认值为0

 

 此时内存中是这样的:

[Java入门笔记] Java语言基础(五):数组

数组中获得数据也是如此,如何知道b数组每个元素的数据呢?首先我们知道通过b这个数组在内存中的哪个位置,因为数组在内存中是一个相连的内存空间,所以b[0]的位置就等于b+0,而b[1]的位置就为b+1,b[2]=b+2,......以此类推,知道了数组所有元素的位置。而数组中第一个元素正好是在数组中开头的位置,用b[0]表示,则刚好是b表示的位置,而用1表示第一个元素的位置,则需要表示为a+1-1。


4、处理数据

在前面的内容中,我们已经定义了数组,初始化了数组,赋了值,那么如何使用数据呢,其实前面已经分析过,我们通过数组下标来为数组赋值,也通过数组下标得到每个数组元素的值。

int[] a = new int[3];a[0] = 3;a[1] = 4;a[2] = 5;System.out.println(a[1]); //得到数组的第二个位置的值,将它输出//我们也可以通过循环遍历数组中每个元素for(int i = 0; i < a.length; i++){  System.out.println(a[i]); //循环打印出数组中每个元素}

 

在上面的例子中,循环打印的时候,我们看到,使用了a.length,通过 数组变量名.length 可以得到数组的长度,所以上面我们通过a.length得到数组的长度为3,循环3次,打印出数组的元素。

不应该访问不存在的下标

上面我们知道,我们控制数组是通过 变量名[下标] 来为变量赋值或者得到值,而如果访问超过了数组长度的下标时,则会出现异常。

int[] a = new int[2];a[5] = 2; //a数组长度只有2个长度,而我们通过下标5访问第6个元素,实际a数组不存在这个位置,则会出现异常。

 

 

二维数组或多维数组

上面我们讲的都是在数组中存储一种基本数据类型或引用数据类型,而我们也可以在数组中存储数组:

                           [Java入门笔记] Java语言基础(五):数组

上面我们在一个数组元素中存储了另外一个数组元素,里面那个数组存储了一种数据类型int的值,我们称这样的数组为二维数组。

二维数组的定义,初始化和赋值

数据类型[ ] [ ] 数组名 = new 数据类型[长度1][长度2] ;

 

长度1为外面一层数组的长度,长度2位里面一层的长度。

定义和初始化上图中的形式,我们可以这样:

int[][] a = new int[3][3];a[0][0] = 2; //访问时前面一个方括号的数字表示外面一层数组的元素下标,第二个方括号的数字表示里面一层的数组的下标a[0][1] = 3;a[0][2] = 4;a[1][0] = 5;a[1][1] = 3;a[1][2] = 9;a[2][0] = 90;a[2][1] = 70;a[2][2] = 85;

 

 

 

我们也可以将二维数组定义成这样一种格式:

                              [Java入门笔记] Java语言基础(五):数组

int[][] a = new int[3][]; //在定义初始化时设置外面一层长度为3,不设置里面一层的长度,
a[0] = new int[2]; //初始化里面每一层,设置长度a[1] = new int[1];a[2] = new int[3];a[0][0] = 3; //为每一个元素赋值a[0][1] = 4;a[1][0] = 9;a[2][0] = 90;a[2][1] = 70;a[2][2] = 85;

 

 

而三维数组就是数组里面的数组里面存放的是数组~~~~~以此类推可以有n多维数组,不过一般人使用的不多  ~~~^_^~~~

 




原标题:[Java入门笔记] Java语言基础(五):数组

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

跨境卖家如何做好海外仓?海外仓优缺点有哪些?:https://www.goluckyvip.com/news/588.html
TikTok电商官方的首度发声,卷不动、不想卷的卖家赶快看过来!:https://www.goluckyvip.com/news/5880.html
“元宇宙”VR眼镜热度大涨,小家电以新奇制胜东南亚:https://www.goluckyvip.com/news/5881.html
美国站FBA重要调整!下调仓储限制红线!:https://www.goluckyvip.com/news/5882.html
亚马逊美国站FBA重要调整!下调仓储限制红线!:https://www.goluckyvip.com/news/5883.html
东南亚电商即将进入全球前三,泰越市场潜力大:https://www.goluckyvip.com/news/5884.html
37号文今后是否会更新?一文详解关键信息 :https://www.kjdsnews.com/a/1836441.html
探讨内地人开设香港账户的可行性 :https://www.kjdsnews.com/a/1836442.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流