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

简介

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

生活案例:博物架spa

每个物品架都是相同类型的物品,长度不变,即便把物品下架,物品架依然不会改变。内存

 

定义数组

使用数组4步走:变量

一、声明数组

Java中支持两种格式的数组定义格式:循环

类型[] 变量名;
类型 变量名[];

 例:遍历

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

 

声明数组也就至关于上面例子中购买了一个定制的物品架(数组)到博物馆中,可是尚未肯定物品架的大小(数组的大小),也尚未往物品架上放东西(数组元素)。数据类型

二、分配空间

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

第一种:静态初始化

静态初始化的语法格式以下:引用

数据类型[] 变量名 = new 数据类型[]{数据1, 数据2,数据3,......};

 例:float

int[] a = new int[]{4,2,64,12,3};  //将这些数存放在数组中,数组的大小(长度)为花括号中元素的数量,该例子中大小为5
String[] 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;

三、赋值

 尽管你已经初始化好了数组,可是咱们仍是能够经过经过赋值的方式改变里面的数据。那么已经初始化好了数组,肯定了数组的大小,咱们该如何为没一个数组元素赋值呢?

数组中还有一个下标的概念,数组初始化的时候,会为每一个元素分配一个下标,就和物品展现架上的编号同样,咱们能够经过下标为每一个元素从新赋值。

数组的下标从0开始,也就是说,第一个元素的下标为0,至于为何要从0开始,咱们后面再探讨一下,咱们先看看赋值的例子:

int[]  a = new int[3];  //定义一个长度为3的int类型数组,里面3个元素值已默认为0;
a[0] = 4;  //设置第一个元素值为4
a[1] = 5;  //设置第二个元素值为5
a[2] = 7;  //设置第三个元素值为7

 

为何数组下标从0开始?

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

int a = 5;

 

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

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

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

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

 

 此时内存中是这样的:

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

四、处理数据

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

复制代码

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数组不存在这个位置,则会出现异常。

 

 

二维数组或多维数组

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

                          

上面咱们在一个数组元素中存储了另一个数组元素,里面那个数组存储了一种数据类型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;

复制代码

 

 

 

咱们也能够将二维数组定义成这样一种格式:

                             

复制代码

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多维数组,不过通常人使用的很少  ~~~^_^~~~

相关文章
相关标签/搜索