一、数组的地址值
数组的地址值表示数组在内存中的位置。
[I@1eb44e46
- [ :表示当前是一个数组
- I:表示当前数组是int类型
- @:表示一个间隔符号(固定格式)
- 1eb44e46:数组真正的地址值(十六进制)
二、数组元素访问
格式:数组名[索引];
索引:
- 也叫下标,角标
- 特点:从0开始,逐+1增长,连续不间断
获取数组中的元素:
public class ArrayDemo2 {
public static void main(String[] args){
//利用索引对数组中的元素进行访问
//1.获取数组里的元素
//格式: 数组名[索引]
int[] arr = {1,2,3,4,5};
//获取数组中的第一个元素
//0索引上对应的元素
int number = arr[0];
System.out.println(number);
System.out.println(arr[0]);
}
}
把数据存储到数组中
//2.把数据存储到数组中
//格式 数组名[索引] = 具体数据/变量;
arr[0] = 100;
System.out.println(arr[0]);
//一旦覆盖,原来的数据就不存在
三、数组遍历
数组遍历:将数组中的所有内容取出来,取出来可以(打印,求和,判断...)
public class ArrayDemo3 {
public static void main(String[] args){
//1.定义数组
int[] arr = {1,2,3,4,5};
//获取数组里面的所有元素
//格式 数组名[索引]
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
//利用循环改进
//开始:0 结束:数组长度 - 1
for(int i = 0;i < 5;i++){
//i可取0,1,2,3,4
System.out.println(arr[i]);
}
//在Java中,关于数组的一个长度属性,length
//调用方式:数组名.length
System.out.println(arr.length);
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
//扩展:
//自动生成数组的遍历方式
//数组名.fori
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
四、数组动态初始化
动态初始化:初始化只指定数组长度,由系统为数组分配初始值。
格式: 数据类型[ ] 数组名 = new 数据类型[数组长度];
public class ArrayDemo4 {
public static void main(String[] args){
/*定义一个数组,用来存放班级50个学生姓名
姓名未知,等学生报道后,进行添加
*/
String[] arr = new String[50];
//添加学生
arr[0] = "zhangsan";
arr[1] = "lisi";
//获取
System.out.println(arr[0]);//zhangsan
System.out.println(arr[1]);//lisi
System.out.println(arr[2]);//打印出来的是默认初始化null
}
}
数组默认初始化的规律
- 整数类型:默认初始化值0
- 小数类型:默认初始化值0.0
- 字符类型:默认初始化值'/u0000'空格
- 布尔类型:默认初始化值false
- 引用数据类型:默认初始化值null
五、数组动态初始化和静态初始化的区别
动态初始化:手动指定数组长度,由系统给出默认初始化值。
- 只明确元素个数,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
- 需求中已经明确了要操作的具体数据,直接静态初始化即可
六、数组中常见的问题
索引越界异常是因为访问了不存在的索引,要使得索引寻找顺利,就需要知道索引的最大值(数组长度 - 1)和最小值(0).