栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数组的基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组的基础

1.数组 1.1 数组的介绍

数组就是存储数据长度固定的容器,存储多个数据的数据类型。

1.2 数组的定义格式 1.2.1 第一种格式

数据类型[] 数组名

代码如下:

int arr[];
double[] arr;
char[] arr;
1.2.2 第二种格式

数据类型 数组名[]

代码如下:

int arr[];
double arr[];
char arr[];
1.3 数组的动态初始化 1.3.1 什么是动态初始化

数组的动态初始化就是指定数组的长度,由系统给出默认初始化值

1.3.2 动态初始化的格式

数据类型[] 数组名 = new 数据类型[数组长度];

int[] arr = new int[10];
1.3.3 动态初始化格式详解
  • 左边:
    • int:数组的数据类型
    • [] :代表这是一个数组
    • arr :代表数组的名称
  • 右边:
    • new:为数组开辟内存空间
    • int:数组的数据类型
    • []:代表这是一个数组
    • 10:代表数组的长度                          

代码如下:

package array;

public class Demo01Array {
    
    public static void main(String[] args) {
        
        int[] arr = new int[10];
        // [I@1540e19d
        System.out.println(arr);

        byte[] barr = new byte[10];
        // [B@677327b6
        System.out.println(barr);
    }
}
1.4 数组的元素访问 1.4.1 什么时索引

每一个存储到数组的元素,都会自动拥有一个编号,从0开始

这个自动编号称为数组的索引(index)可以通过数组的索引来访问数组中的元素

1.4.2 访问数组元素格式

数组名[索引]

1.4.3 代码实例
package array;


public class Demo2ArrayIndex {
    
    public static void main(String[] args) {
        // 0 1
        int[] arr = new int[2];
        // 数组的内存地址 [I@1540e19d
        System.out.println(arr);
        // 数组名[索引] 访问数组容器中的空间位置
        System.out.println(arr[0]); // 0 系统自动分配默认初始化值
        System.out.println(arr[1]);

        // 分隔符
        System.out.println("==========");

        // 数组名[索引]
        arr[0] = 1;
        arr[1] = 2;

        System.out.println(arr[0]);
        System.out.println(arr[1]);
    }
}
1.5 内存分配 1.5.1 内训概述

内存是计算机中的重要原件,临时存储区域,作用是运行程序。

我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。

必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

1.5.2 java中的内存分配
  • 目前我们只需要记住两个内存,分别是:栈内存和堆内名称
名称作用
寄存器给CPU使用,和我们开发无关。
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关。
方法存储可以运行的class文件。
堆内存存储对象或者数组,new来创建的,都存储在堆内存。
方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
1.6 Java内存分配——一个数组内存图 

1.7 两个数组内训图

 1.8 多个数组指向相同内存图

 1.9  数组的静态初始化 1.9.1 什么是静态初始化

在创建数组时,直接将元素确定
 

1.9.2 静态初始化格式

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};

1.9.3 代码
package array;public class Demo03Array {
    
    public static void main(String[] args) {
        // 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};
        int[] arr = new int[]{22,33,44};
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        // 数据类型[] 数组名 = {数据1,数据2,数据3...};
        int[] arr2 = {77,88,99};
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);

    }
}

1.10 数组操作的两个常见问题 1.10.1 索引越界异常
  • 出现原因
package array;

public class Demo04Array {
    public static void main(String[] args) {
        int[] arr = new int[2];
        System.out.println(arr[3]);
    }
}

数组长度为2,索引范围是0~1,但是我们却访问了一个3的索引。

程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不 能出现的,一旦出现了,就必须要修改我们编写的代码。

  • 解决方案

      将错误的索引修改为正确的索引范围即可!

1.10.2 空指针异常
  • 出现原因
package array;


public class Demo05Array {
    public static void main(String[] args) {
        int[] arr = new int[2];
        // 把null赋值给数组
        arr = null;
        System.out.println(arr[0]);
    }
}

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时 候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必 须要修改我们编写的代码。

  • 解决方案

给数组一个真正的堆内存空间引用即可!

1.11 数组遍历
  • 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
package array;


public class Demo06Array {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        // 遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
数组复制的两种方法:
  1. Arrays.copyOf();
  2. System.arraycopy();
1.12 学生管理系统(来对数组知识进行整合)

代码如下:

package student;


public class Student {

    private int id;   
    private String name; 
    private int age; 
    private int score; 
    private String address; 

    public Student() {
        super();
    }

    public Student(int id, String name, int age, int score, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.score = score;
        this.address = address;
    }

    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;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String
    toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", age=" + age +
                ", score=" + score +
                ", address='" + address + ''' +
                '}';
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/946228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号