Java基础 | 数组

简介: 数组

数组

(一)数组定义的格式(推荐使用 格式一)

格式一:数据类型[ ] 变量名

范例:

         int[] arr

定义了一个 int类型的数组,数组名为arr

格式二:数据类型 变量名 [ ]

范例:

         int  arr[]

定义了一个int类型的变量,变量名是arr数组



(二)数组的初始化

1.数组初始化概述

java中的数组必须先初始化,然后才能使用

所谓初始化:就是为数组元素分配内存空间,并为每个数组元素赋值。


2.数组初始化方式

1)动态初始化

【初始化时只指定数组长度,由系统为数组分配初始值】

格式:数组类型[ ] 变量名 = new 数据类型[数组长度];

new:为数组申请内存空间

范例:

        int[] arr = new int[3]
2) 静态初始化

【初始化时指定每个数组元素的初始值,由系统决定数组长度】

格式:数据类型[ ] 变量名 = new 数据类型[ ] {数据1, 数据2 , 数据3, ......};

范例:

int[] arr = new int[]{1,2,3};

简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3,......};

范例:

int[] arr = {1,2,3};

程序举例:

public static void main(String[] args) {
    int[] arr = {1,2,3};
    System.out.println(arr); // [I@119d7047
    System.out.println(arr[0]); // 1
    System.out.println(arr[1]); // 2
    System.out.println(arr[2]); // 3
}


(三)数组元素访问

1.数组变量访问方式

格式:数组名


2.数组内部保存的数据的访问方式

格式:数组名[索引]

【索引是数组中数据的编号方式】

  • 作用:索引是用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
  • 特征①:索引从0开始
  • 特征②:索引是连续的
  • 特征③:索引逐一增加,每次加1

    程序举例:

    public static void main(String[] args){
            int[] arr = new int[3];
            //输出数组名
            System.out.println(arr);// [I@119d7047     这是数组申请的内存空间的地址值
            //输出数组中的元素
            System.out.println(arr[0]);// 0
            System.out.println(arr[1]);// 0 
            System.out.println(arr[2]);// 0
        }


(四)Java 中的内存分配

0.数据类型的默认值

数组在初始化时,会为存储空间添加默认值

  • 整数:默认值0
  • 浮点数:默认值0.0
  • 布尔值:默认值false
  • 字符:默认值是空字符
  • 引用数据类型:默认值是null 【null:空值,引用数据类型的默认值,表示不指向任何有效对象】

1.栈内存

【存储局部变量】

使用完毕,立即消失


2.堆内存

【存储new出来的内容(实体,对象)】

每一个new出来的东西都有一个地址值

使用完毕,会在垃圾回收器空闲时被回收。


3.多个数组指向相同的内存图

程序举例:

public static void main(String[] args){
    int[] arr1 = new int[3];
    arr1[1] = 200;
    arr1[2] = 300;
    System.out.println(arr1); // [I@119d7047
    System.out.println(arr1[1]);// 200
    System.out.println(arr1[2]);// 300

    int[] arr2 = arr1;  // 当多个数组指向同一个内存图时,其中一个数组的值改变时,另一个数组的值也会随着它的改变而改变
    arr2[1] = 220;
    arr2[2] = 330;
    System.out.println(arr1); // [I@119d7047
    System.out.println(arr2); // [I@119d7047
    System.out.println(arr1[1]);// 220
    System.out.println(arr1[2]);// 330
    System.out.println(arr2[1]);// 220
    System.out.println(arr2[2]);// 330
}


(五)数组操作的两个常见小问题

1.索引越界

【访问了数组中不存在的索引对应的元素,造成索引越界问题】

int[] arr = new int[3];
//输出数组中不存在的元素
System.out.println(arr[3]); // ArrayIndexOutOfBoundsException(索引越界)

2.空指针异常

【访问的数组已经不再指向堆内存的数据,造成空指针异常】

int[] arr = new int[3];
System.out.println(arr[2]);
//把null赋值给数组
arr = null;
//输出元素
System.out.println(arr[2]); // NullPointerException(空指针异常)


(六)数组常见操作

1.遍历

通用格式:

int[] arr = {1, 2, 3, 4};
// arr.length 用于获取数组的长度
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

2.获取数组中的最大值

通用格式:

int[] arr = {100, 99, 55, 66, 88, 11};
// 定义一个变量用于保存最大值,并把数组的第一个元素保存在这个变量中
int max = arr[0];
// 将这个最大值与数组的其他每个元素进行比较大小,每次对比将较大的值重新赋值给这个变量
for (int i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
// 输出最大值
System.out.println("max:" + max);


目录
相关文章
|
2月前
|
存储 Java
Java数组07:稀疏数组
【8月更文挑战第23天】
27 2
|
2月前
|
Java
|
1天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
19天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
14天前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
15天前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
34 2
|
6天前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。
|
2月前
|
Java
Java数组的应用场景
Java数组的应用场景
29 1
|
2月前
|
存储 机器学习/深度学习 Java
Java数组
Java数组
27 1
|
2月前
|
存储 Java
如何在 Java 中打印字符串数组列表
【8月更文挑战第23天】
30 2
下一篇
无影云桌面