JAVA(基础) 数组
数组概念
和变量存储单个数据不同,数组是相同数据类型的有序集合。
数组的特点:
1.是引用数据类型
2.数组的大小是固定的,长度一旦确定不可改变
3.数组中的数据数据类型相同
4.数组 中的数据是有序的,索引|下标(从0开始)
一维数组
数组的声明与赋值
数组的声明:数据类型[] 数组名; 也有其他的写法,开始推荐这种写法。
数据类型可以是基本数据类型,也可以是引用数据类型。
数组不赋值存在默认值
整数0 小数0.0 boolean->false char->’ ’ 引用数据类型(String)->null
数组的初始化:1>先创建数组,然后在赋值 数据类型[] 数组名 = new 数据类型[整数n];
数组名[0] = 值1;
数组名[1] = 值2;
…
数组名[n-1] = 值n;
整数n是代表数组的长度,可以用数组名.length 查看
2>创建数组的时候赋值
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3…};
数据类型[] 数组名 = {值1,值2,值3…};
数组的索引从0开始 上面 数组名[0],其中0就是索引。最后一个空间: 数组名.length-1
数组的遍历
普通for循环 —>变量作为数组的索引
增强for循环—>也叫for each 循环
for(数据类型 变量名:数组名|集合名字){
变量->指代每一个数据
}
//构建一个数组
int[] arr =new arr[]{12,23,45,55};
//for 循环遍历
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
//增强for 循环 遍历
for(int a:arr){
System.out.println(a);
}
其中增强for循环的int a 是值,是数组中值得遍历。
二维数组
上面的我们叫为一维数组,二维数组与一维数组的不同是在数组中放数组。
声明和初始化
声明: 数据类型[][] 数组名; 推荐这样使用,也有其他的使用方式。
初始化:先创建数组后赋值
数据类型[][] 数组名 = new 数据类型[一维数组的长度][二维数组的长度];
数据类型[][] 数组名 = new 数据类型[一维数组的长度][];
创建数组的同时赋值
数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2…},{},{}…};
使用: 数组名[外层数组的索引][内层数组的索引]
遍历
可以用普通for和增强for的任意嵌套。
//数据类型[][] 数组名 = new 数据类型[一维数组的长度][];
char[] arr1 = new char[2][];
// 外层数组赋值
arr1[0] = new char[2];
arr1[0][0] = 'a';
arr1[0][1] = 'b';
//内层数组赋值
arr1[1] = new char[]{'c','d','e'};
//数组为 arr1={{'a','b'},{'c','d','e'}}
//遍历 普通for和增强for
for(int i=0;i<=arr.length-1;i++){
for(char ch:arr[i]){
System.out.println(ch);
}
}
//增强for和普通for
for(char[] ar:arr1){
for(int i=0;i<ar.length;i++){
System.out.println(ar[i]);
}
}
经典案例(点名器)
数组中放引用数据,class对象
import java.util.Random;
/*
随机点名器
存储班级所有同学的相关信息
*/
public class ByName {
public static void main(String[] args) {
//1.构建班级学生
Student s1 = new Student(101,"张三",21);
Student s2 = new Student(102,"李四",22);
Student s3 = new Student(103,"王五",18);
//2.构建存储学生的数组
/*Student[] arr = new Student[3];
arr[0] = s1;*/
Student[] arr = {s1,s2,s3};
//3.定义随机数 数组长度为3,索引变化范围[0,2]
//num数组的索引
int num = new Random().nextInt(3);
//4.随机点名
System.out.println(arr[num]);
}
}
//学生类
class Student{
//属性私有化
private int id;
private String name;
private int age;
//空构造 arl+insert自动生成
public Student() {
}
//带参构造 arl+insert自动生成
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
//设置公共的访问方式
//访问器和设置器 arl+insert自动生成
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写toString方法 arl+insert自动生成
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}