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基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
73 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
32 4
|
2月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
30 2
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
2月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
47 9
|
2月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
24 3
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
29 6
|
2月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
25 1
|
2月前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
15 1
|
3月前
|
安全 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版)
下一篇
无影云桌面