什么是数组
是存储**同一种数据类型**的的集合,也叫容器;特点:是数组中每个元素都有索引从0开始;有序
Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的
一维数组
数组的定义及赋值方式
① 第一种定义方式, 定义的同时给赋了初始值, 也是第一种赋值方式: int[] arr = {1,2,3,4,5,6,7,8,9,10}; 其实这是一种连写,本质是是两个步骤:
第一步: int[] arr; //定义或叫声明一个 整数类型的数组变量 arr
第二步:arr = {1,2,3,4,5,6,7,8,9,10}; // 给整数类型的数组变量 arr 赋值, 注意可以这样理解,但是没这种赋值的语法
② 第二种定义方式, 和第一种本质一样,只是写法不一样:
int[] arr = new int[]{20,30,40}; // 可以理解第一种写法是这种写法的简化,省略new int[]关键字
③ 第三种定义方式, 定义就只是定义, 没给赋初始值:
int[] arr = new int[3]; // 定义数组变量的时候没赋值,必须要指定数组的长度
定义好数组变量后, 可以这样给单个单个数组元素赋值, 这是第三种赋值方式:
arr[0] = 11;
arr[1] = 12;
arr[2] = 13;
二维数组
数组的数组---二维数组的本质也是一维数组,只不过是这个一维数组里的每一个元素是又是一个一维数组定义方式
第一种定义方式
数据类型[][] 数组名 = new 数据类型[包含的一维数组的个数][每个一维数组的长度];int[][] arr = new int[3][5];
—定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数
注意知识点:定义一个一维数组,没有赋初始值的定义方式,必须指定这个数组的长度,但是到了二维数组,里边的元素数组的长度我们在定义的时候可以不明确指定是可以的:
int[][] arr = new int[3][]; ----表示一个包含了三个整型的一维数组的二维数组,里边的充当元素的数值长度是可变的
第二种定义方式
数据类型[][] 数组名 = {{元素},{元素1, 元素2},……};int[][] arr = {{2,5},{1},{3,2,4},{1,7,5,9}};
二维数组的遍历
二维数组的长度:数组名.length ---每个一维数组:数组名[下标].length二维数组的遍历---两重for循环
for(int i = 0; i < arr.length; i++){ //遍历二维数组,遍历出来的每一个元素是一个一维数组
for(int j = 0; j < arr[i].length; j++){ //遍历对应位置上的一维数组
System.out.println(arr[i][j]);
}
}
对象数组
在Java中不但可以声明由基本数据类型的数据组成的数组,还可以声明由对象组成的数组; 声明对象数组的方式如: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190608224249967.png)注意:对象数组==引用数组,它的内存结构很多初学者都会搞错:
放到数组的元素其实是对象在堆内存中的内存地址,我们常常叫做这个对象的引用:
真正的内存结构应该是:
下面来看一个例子
package cn.bzu.look.dao;
public class StudentTest {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "StudentTest [age=" + age + ", name=" + name + "]";
}
public StudentTest(int age, String name) {
super();
this.age = age;
this.name = name;
}
public static void main(String[] args) {
StudentTest stuArr[] = new StudentTest[5];
stuArr[0] = new StudentTest(20,"小哈");
stuArr[1] = new StudentTest(21,"小黑");
stuArr[2] = new StudentTest(22,"小白");
stuArr[3] = new StudentTest(23,"大白");
stuArr[4] = new StudentTest(24,"明明");
for(StudentTest s: stuArr) {
System.out.println(s);
}
}
}
输出结果
StudentTest [age=20, name=小哈]
StudentTest [age=21, name=小黑]
StudentTest [age=22, name=小白]
StudentTest [age=23, name=大白]
StudentTest [age=24, name=明明]
数组的常用方法
https://blog.csdn.net/weixin_43610698/article/details/91777168