【JavaSE】数组的赋值机制(值拷贝与引用传递)、数组拷贝、数组反转与数组扩容

本文详细讲解Java SE中的数组使用、注意事项、赋值机制,包括值拷贝与引用传递,还涉及数组反转、扩容技巧,以及如何在实际需求中动态添加元素。深入理解数组的底层原理与实用技巧。

本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️
⭐️往期回顾:


1 数组引入

✈️ 数组是 Java 里的引用数据类型,可以存放多个同一类型的数据,通俗点来说,数组就是一组数据。

1.1 数组的使用

⭐️star 1: 动态初始化

方式一:声明的同时分配存储空间
数据类型 [ ] 数组名 = new 数据类型 [ 大小 ];

方式二:先声明后分配存储空间
数据类型 数组名[ ];
数组名 = new 数据类型 [ 大小 ];

比如我们需要创建一个含有五个元素的数组,每个元素都用于存储学生的成绩,示例代码如下:

Scanner in = new Scanner(System.in);
// 声明数组并开辟空间
double[] score = new double[5];
// 赋值
for(int i = 0; i < 5; i++){
   
   
	score[i] = in.nextDouble();
}

上述代码声明了一个长度为5的数组score,其中score[ 0 ]指向第一个元素,依此类推,注意,在数组中,索引是从 0 开始的,示意图如下:
在这里插入图片描述
⭐️star 2: 静态初始化
适用于知道数组具体有多少元素和具体值的情况。

数据类型 数组名[ ] = { 元素值1元素值2元素值3 … …};

1.2 数组的注意事项

  1. ⭐️ 数组是多个相同类型数据的组合,实现对数据的统一管理,如果声明了 int 类型的数组,那么其元素值均为 int 类型,但是其也满足类型转换规则,如下代码是可以编译通过的:
double[] number = {
   
   12.3, 1.23, 2.44, 100};  // 符合自动类型转换
  1. ⭐️ 数组中的元素可以是基本数据类型与引用数据类型,但是不可以混用,比如 String 类型的数组中不能存在 int 类型元素;
  2. ⭐️ 如果数组创建后没有进行赋值,则会使用默认值,具体如下表:
数据类型 默认值
int 0
short 0
byte 0
long 0
float 0.0
double 0.0
boolean false
String null
  1. ⭐️ 数组属于引用类型,数组型的数据是对象。

1.3 数组的赋值机制

1.3.1 基础数据类型的值拷贝

我们先来讨论一下基础数据类型的赋值机制,观如下代码:

public class Main {
   
   
    public static void main(String[] args) {
   
   
        int a = 10;
        int b = a;
        b = 20;
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}

🍑 代码运行结果为 a = 10,b = 20,可见 a 没有受到 b 的影响,我们把这种赋值机制叫做 值拷贝

1.3.2 数组的引用传递

🍑 数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用传达。
一脸懵? 没关系,我们直接看代码:

public class Main {
   
   
    public static void main(String[
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴趣使然黄小黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值