我们知道在java中想要存储数据就需要用到变量,但是当我们想要存储多个数据时,变量就不符合我们的要求,有没有可以存储多个数据的"容器"呢?这个时候我们就可以使用数组来满足我们的需求
什么是数组:
相同的数据类型的有序集合
数组的与变量的区别:
变量:只能存储单个数据
数组:可以存储多个数据
数组的特点:
1.数组是一个引用数据类型,相当于一个盛放多个数据的"容器"
2.一个数组中的多个数据的数据类型一致|相同
3.长度一旦确定不可改变
4.数组中的数据是有序的(索引|下标)
索引|下标: 从0开始,依次+1
数组的变化范围:
从0开始,最后一个数据的索引为:数组的长度-1,
如何获取数组的长度:
数组名.length-1
如何操作数组中的数据(赋值|获取数组中的值|修改值):
根据数组的索引|下标 数组名[索引|下标] (精确定位到数组中的值)
如何声明数组:
数据类型 [] 数组名; ------>推荐使用
数据类型 数组名 [];
数据类型的作用: 指明数组中存放的每一个数据的类型
数组的初始化(初始化即第一次赋值)有两种:
1.动态初始化:先根据数组的长度创建一个数组,但是没有赋值,确定数据的时候再赋值
格式: 数据类型 [] 数组名= new 数据类型[整数n];(整数n代表数组的长度)
数组中的数据没有赋值的时候存在默认值:
数值类型 | 默认值 |
---|---|
整数 | 0 |
小数 | 0.0 |
字符串 | null |
字符型 | ’ '(空字符) |
布尔型 | false |
public class Test{
public static void main(String[]args){
//数组的声明,存储int类型的数组
int[] arr1;
//动态初始化
arr1= new int[3];//3 确定数组的长度
//获取数组中的值
//根据数组的索引|下标 数组名[索引|下标] (精确定位到数组中的值)
System.out.println(arr1.length);//获取数组的长度
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
//根据数组中的索引|下标值进行赋值
arr1[0] = 123;
arr1[1] = 456;
arr1[2] = 789;
System.out.println(arr1[0]);//输出结果为123
System.out.println(arr1[1]);//输出结果为456
System.out.println(arr1[2]);//输出结果为789
}
}
2.静态初始化: 创建的同时赋值
数据类型 [] 数组名 = new 数据类型 [] {值1,值2,值3…};
数据类型 [] 数组名 = {值1,值2,值3…};–简略写法,不够灵活,但是简单
public class Test{
public static void main(String[]args){
//数组的声明,存储String类型的数组
//静态初始化,创建的同时赋值
String[] arr2 = {"呵呵","哈哈","嘿嘿",};
//获取数组中的值
//根据数组的索引|下标 数组名[索引|下标] (精确定位到数组中的值)
//获取数组的长度:数组名.length
System.out.println(arr2.length);//获取数组的长度 输出结果为3;
System.out.println(arr2[0]);//输出结果为 呵呵
System.out.println(arr2[1]);//输出结果为 哈哈
System.out.println(arr2[2]);//输出结果为 嘿嘿
/*
利用数组的索引从0开始,数组的长度为 数组名.length-1.得到范围,利用循环,依次打印输出(遍历)
代码如下:
*/
for(int i=0;i<=arr2.length-1;i++){
System.out.println(arr2[i]);
}
/*
遍历的结果为:
呵呵
哈哈
嘿嘿
*/
/*
利用增强for循环来遍历数组arr2
增强for循环 | for..each
for(数据类型 变量名: 数组名|容器名){
变量代表数组中的每一个数据(非索引)
}
*/
//for...each
for(String str : arr2){
System.out.println(str);
}/*
运行结果为:
呵呵
哈哈
嘿嘿
*/
}
}
数组的遍历: 从前到后拿到每一个数据
1.普通for循环
遍历索引->循环变量i控制数组的索引
2.增强for循环 | for…each
for(数据类型 变量名: 数组名|容器名){
变量代表数组中的每一个数据(非索引)
}