JAVA(基础) 数组

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 +
                '}';
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值