数组的概述
数组(Array):,是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。
数组本身是引用数据类型,而数组中的元素可以是任何数据类型(基本数据类型和引用数据类型)。
创建数组对象会在内存总开辟一块连续的空间,而数组名中引用的是这块连续空间的首地址。
数组的长度一旦定义,就不能更改。
我们可以直接通过下标(索引)的方式来调用指定位置的元素。
数组的常见概念:
-
数组名
-
下标(或索引)
-
元素
-
数组的长度
数组的分类: -
按照维度分类:一维数组、二维数组、三维数组…
-
按照数组中元素类型的分类:基本数据类型元素的数组(整型数组,字节数组等)和引用数据类型元素的数组(即对象数组)
-
按照定义分类:动态类型数组、静态类型数组
一维数组的使用
一维数组的定义方式:
int[] num 或 int num[];
注意:java中声明数组时不能指定数值的长度(数组中元素的个数),比如:int score[10]//错误
一维数组的初始化:
- 动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
实例1:
package com.qwy;
public class Demo01 {
public static void main(String[] args) {
//动态声明一维数组:声明,并初始化
int[] score=new int[5];
//给数组赋值
score[0]=88;
score[1]=99;
score[2]=100;
score[3]=85;
score[4]=88;
//动态声明一维数组:先声明,再初始化
String names[];
names=new String[3];
//给数组赋值
names[0]="张三";
names[1]="李四";
names[2]="王五";
}
}
- 静态初始化:在定义数组的同时就为数组元素分配空间并赋值
实例2:
package com.qwy;
public class Demo02 {
public static void main(String[] args) {
//静态声明一维数组:声明,并赋值,注意不要编写数组长度
int[] score=new int[]{88,89,99,100,86};
//静态声明一维数组,直接赋值
String names[]={"张三","李四","王五"};
}
}
数组元素的引用:
1.定义使用new为之分配空间后,才可以引用数组中的每个元素。
2.数组元素的引用方法:数组名[数组元素下标]
1)数组元素下标可以是整数常量或振兴表达式:如a[3] , b[i] , c[6*i];
2)数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]
3.每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长 度(元素个数)
注意:数组一旦初始化,其长度是不可变的。
数组元素的默认初始化值:
数组是引用类型,它的元素相当于类的成员变量,因此数组一经 分配空间,其中的每个元素也被按照成员变量同样的方式被隐式 初始化
实例3:
package com.qwy;
public class Demo03 {
public static void main(String[] args) {
//静态声明一维数组:声明,并赋值,注意不要编写数组长度
int[] score=new int[5];
System.out.println(score[0]);//默认值0
System.out.println(score[2]);//默认值0
}
}
- 对于基本数据类型的数组,默认初始值分别为对应基本数据类型的默认值。
参照:https://blog.csdn.net/qwy715229258163/article/details/113667381 - 对于应用数据类型的数组,默认初始值均为null。
一维数组的内存图
java中使用关键字new来创建数组。创建基本数据类型元素一维数组:
实例4:
package com.qwy;
public class Demo04 {
public static void main(String[] args) {
//创建一维数组:基本数据类型数组在显式赋值之前,Java会自动给他们赋默认值。
int[] scores=new int[5];
}
}
内存图:在显式赋值之前
实例5:在显式赋值之后
package com.qwy;
public class Demo05 {
public static void main(String[] args) {
//创建一维数组:基本数据类型数组在显式赋值之前,Java会自动给他们赋默认值。
int[] scores=new int[5];
//重新赋值
scores[0]=88;
scores[1]=99;
scores[2]=100;
scores[3]=85;
scores[4]=88;
}
}
内存图: