数组的本质和初始化
首先,数组就是相同数据类型的有序集合,简单总结了三个特点:
- 数组的长度在被创建完成之后不可轻易更改。
- 一个数组中的所有元素类型必须相同。
- 数组类型可以是任意类型(基本类型、引用类型)
然后,声明一维数组的方法的两种写法:
//java一般将表示数组的括号[]放在前面(推荐这么写)
int[] arr = new int[5];
//这种写法是C语言风格,但是也可以用
int arr[] = new int[5];
接着进行数组的初始化,系统会自动默认初始化:
- 数字类型的数组:默认初始化为 0
- 布尔类型的数组:默认初始化为 false
- 引用类型的数组:默认初始化为 null
我们也可以自己进行初始化,也就是赋值,同样分为静态初始化和动态初始化:
//静态初始化
int[] arr = {10, 20, 30, 40, 50};
//或者这么写
int[] arr = new arr[]{10, 20, 30, 40, 50};
//动态初始化
//比较常见的写法
for (int i = 0; i < arr.length; i++) {
a[i] = 10 + 10 * i;
}
//也可以逐个进行初始化(也算动态初始化)
arr[0] = 10; arr[1] = 20;
arr[2] = 30; arr[3] = 40;
arr[4] = 50;
至此,一个最简单的数组就已经定义完成了,下面可以尝试遍历一下数组(就是逐个输出)
这里有一个方法叫做增强for循环(for-each)遍历数组,形式如下:
//int为数组类型
//temp是一个中间变量,起什么名都行
//arr为数组名
for (int temp:arr){
System.out.println(temp);
}
//上面等价于下面的代码,但写起来更简便
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
System.out.println(temp);
}
这样就将数组的每一个元素都打印出来了。
稍微有点难度的是引用类型数组的运用,面向对象经常会用到,比如我们想定义一个学生类型的数组,在里面存放姓名,年龄,学号等信息:
class Student {
//这里就不定义私有属性了
String name;
int age;
int number; //学号用String类型定义也可以
//定义一个构造器,初始化对象
public Student(String name, int age, int number) {
this.name = name;
this.age = age;
this.number = number;
}
/*
重写toString方法
我的理解是对于打印动态初始化的对象
一般都需要重写toString方法
否则返回值为一个哈希值(可以理解为地址)
*/
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", number=" + number +
'}';
}
}
public class Text {
public static void main(String[] args) {
Student[] stu = new Student[2]; //定义一个有两个学生的数组
//对属性初始化
stu[0] = new Student("小秦", 20, 202201);
stu[1] = new Student("小红", 19, 202202);
//遍历学生数组
for (int i = 0; i < stu.length; i++){
System.out.println(stu[i]);
}
}
}
一个简单的学生类数组就定义完成并且打印出来了:

欢迎指出问题!