文章目录
一、数组介绍
数组:是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换考虑。
建议:容器的类型,和存储的类型保持一致。
二、数组的初始化
初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
三、 静态初始化
完整格式:数据类型 [] 数组名 = new 数据类型 [] {元素1,元素2,元素3......};
例:
存整数
int [] array = new int []{11,22,33};
存小数
double [] array2 = new double []{11.1,22.2,33.3};
简化格式:数据类型 [] 数组名 = {元素1 , 元素2 , 元素3 .....};
例:
存整数
int [] array = {11,22,33};
存小数
double [] array2 = {11.1,22.2,33.3};
实例演示:
public class array {
public static void main(String[] args) {
//需求一:定义一个数组储存5个学生年龄
int []age = {11,22,33,25,44};
//需求二:定义数组存储3个学生的姓名
String []xin = {"鬼童丸","缘结神","不知火"};
//需求三:定义数组存储4个学生的身高
double []shengao = {170.2 , 165.2 , 158.6 , 168};
}
}
1.数组的地址值和元素访问
如果我们去取数组值,我们如果把数组直接打印呢?
示范:
public class arraydizhi {
public static void main(String[] args) {
double []arr6 = {170.2 , 165.2 , 158.6 , 168};
System.out.println(arr6);
}
}
输出一堆乱码,这堆乱码叫作数组的地址值。
2.扩展
地址值的格式含义 {D@776ec8df
[
:表示当前是一个数组
D
:表示当前数组里面的元素都是double类型的
@
:表示一个间隔符号。(固定格式)
776ec8df
:才是数组真正的地址值。(十六进制)
平时我们习惯性的会把这个整体叫作数组的地址值。
3.数组的元素访问
格式:数组名[索引]
- 索引:也叫做下标,角标。
- 索引特点:从0开始,逐个+1增长,连续不间断。
示范(访问数组
):
public class fangwen {
public static void main(String[] args) {
//利用索引对数组中的元素进行访问
//1.获取数组里的元素
//格式 : 数组名[索引]
int []array={1,2,3,4,5};
//获取第一个元素
//其实就是0索引上定义的元素
int nub = array[0];
System.out.println(nub);
//获取数组中1索引上对应的数据,并直接打印出来
System.out.println(array[1]);
}
}
示范(数据存到数组中
):
public class cunchu {
public static void main(String[] args) {
//2.把数据存储到数组当中
//格式 : 数组名[索引] = 具体数据/变量;
int []array = {1,2,3,4,5};
array[0] = 100;
System.out.println(array[0]);
}
}
4.数组遍历
数组遍历:将数组中所有的内容
取出来
,取出来之后可以(打印,求和,判断…)
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是直接打印!
示范:
public class shuzu {
public static void main(String[] args) {
//1.定义数组
int []arr ={1,2,3,4,5};
//2.获取数组里的所有元素
//格式 :数组名[索引]
for(int i=0;i<=4;i++) {
System.out.println(arr[i]);
}
}
}
5.数组长度测量
在Java中,关于数组的一个长度属性:
length
调用方式:数组名.length
示范:
public class chnag {
public static void main(String[] args) {
//1.定义数组
int []array = {1,2,3,4,5,6,7,8,9};
//在Java当中,关于数组的一个长度属性:length
//调用方式:数组名.length
System.out.println(array.length);
}
}
6.循环遍历数组
示范:
public class bianlisuoy {
public static void main(String[] args) {
int []arr = {1,2,3,4,5};
for (int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
}
}
快速生成
扩展:
自动快速生成数组遍历方式
idea提供的
数组名.fori
四、动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数组类型[数组长度];
范例:
int[] arr = new int[3];
示范:
public class dontai {
public static void main(String[] args) {
/*
定义一个数组,用来存班级中50个学生的姓名
姓名未知,等学生报道之后,再进行添加。
*/
/*
格式:数据类型[] 数据名 = new 数据类型[数组的长度];
*/
String[] xuesheng=new String[50];
//添加学生
xuesheng[0] = "guitongwan";
xuesheng[1] = "yuanjiesheng";
//获取(打印)
System.out.println(xuesheng[0]);//guitongwan
System.out.println(xuesheng[1]);//yuanjiesheng
System.out.println(xuesheng[2]);//打印出来的是默认初始化值null
}
}
数组默认初始化值的规律
整数类型:默认初始化值 0
小数类型:默认初始化值 0.0
字符类型:默认初始化值 ‘/u0000’ 空格
布尔类型:默认初始化值 false
引用数据类型:默认初始化值 null
五、数组动态初始化和静态初始化的区别
动态初始化:手动指定数组长度
,由系统给出默认初始化值。
- 只
明确
元素个数
,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素
,系统会根据元素个数,计算出数组的长度。
- 需求中已经明确了要操作的具体数据,直接静态初始化即可。
六、数组常见问题
当访问了数组中不存在的索引,就会引发索引越界异常。
示范
public class suoyin {
public static void main(String[] args) {
//1.定义一个数组
int[] arr = {1,2,3,4,5};
//长度:5
//最小索引:0
//最大索引:4(数组的长度 - 1)
System.out.println(arr[10]);
}
}