【Java探索之旅】数组概念与初始化指南:动静结合

简介: 【Java探索之旅】数组概念与初始化指南:动静结合

📑前言

数组是一种强大且常用的数据结构,它为我们提供了一种有效的方式来存储和管理大量相同类型的数据。通过数组,我们可以避免重复定义大量的变量,使代码更加简洁和高效。本文将带您深入探索数组的创建和初始化方法,帮助您更好地理解和运用数组在编程中的重要性和灵活性。  

一、初识数组

1.1 为什么要有数组?

现在假设有五名同学的体育期末成绩,要将其存储起来你会怎么存?在你不了解数组的时候,你的代码可能是这样写的:

public static void main(String[] args){
    int score1 = 70;
    int score2 = 80;
    int score3 = 85;
    int score4 = 60;
    int score5 = 90;
    System.out.println(score1);
    System.out.println(score2);
    System.out.println(score3);
    System.out.println(score4);
    System.out.println(score5);
}

这样的代码是不存在错误的,但是存在了许多的重复,你需要不停的定义int类型和变量名,当少数只有几个数据的时候,你写的话可能还行,但是如果是30个、50个、100个同学的成绩要存起来呢?

大量的重复,你一定会敲到怀疑人生。

观察上述代码你会发现,这些数据的类型都是统一的,没有其他的类型掺杂。

这个时候我们就需要用到数组了。

1.2 数组的的概念

数组:可以将其看成一组相同类型数据的集合。并且在内存中是一块连续的空间。

这是一张简易的车库图,图中有每个车位的编号,并且都是连续的。(数组就好比这张图,连续存储统一的数据)

二、数组的创建及初始化

2.1 数组的创建

T[] 数组名 = new T[N];
  • T:表示数组中存放元素的类型
  • T[]:表示数组的类型
  • N:表示数组的长度

int[] array1 = new int[10]; // 创建一个可以容纳10个int类型元素的数组
double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组
String[] array3 = new double[3]; // 创建一个可以容纳3个字符串元素的数组

2.2 数组的初始化

动态初始化

在创建数组时,直接指定数组中元素的个数

int[ ] array = new int[10];

静态初始化

在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

语法格式:T[] 数组名称 = {data1, data2, data3, …, datan};  

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

2.3 注意要点

  • 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
  • 静态初始化时, {}中数据类型必须与[]前数据类型一致。
  • 静态初始化可以简写,省去后面的new T[]。

// 注意:虽然省去了new T[], 但是编译器编译代码时还是会还原
int[] array1 = {0,1,2,3,4,5,6,7,8,9};
double[] array2 = {1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = {"hell", "Java", "!!!"};
  • 数组也可以按照如下C语言个数创建,不推荐  该种定义方式不太友好,容易造成数组的类型就是int的误解[]如果在类型之后,就表示数组类型,因此int[]结合在一块写意思更清晰  

int arr[] = {1, 2, 3};
  • 静态和动态初始化也可以分为两步,但是省略格式不可以  注意省略格式不可以拆分, 否则编译失败  

int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20, 30};
//下列初始化会报错
int[] array3;
array3 = {1, 2, 3};
  • 如果没有对数组进行初始化,数组中元素有其默认值  如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:  如果数组中存储元素类型为引用类型,默认值为null  

类型

默认值

byte

0

short

0

int

0

long

0

float

0.0f

double

0.0

char

/u0000

boolean

false

🌤️全篇总结

数组作为编程中不可或缺的数据结构,为我们提供了一种便捷且高效的方式来存储和操作大量数据。通过动态初始化和静态初始化,我们可以灵活地创建和初始化数组,满足不同场景下的需求。在使用数组时,我们需要注意数据类型的一致性、初始化的方式选择以及数组元素的默认值等细节,以确保代码的正确性和可读性。

33dcadccda9a4327a9541c4fd95c09fd.png

目录
相关文章
|
8天前
|
Java
Java中的多线程编程:概念、实现与挑战
【5月更文挑战第30天】本文深入探讨了Java中的多线程编程,涵盖了多线程的基本概念、实现方法以及面临的挑战。通过对Java多线程编程的全面解析,帮助读者更好地理解多线程在Java中的应用,提高程序的性能和效率。
|
2天前
|
存储 算法 Java
【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)
【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)
6 1
|
2天前
|
算法 搜索推荐 Java
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
6 3
|
2天前
|
存储 Java 程序员
你真是了解Java数组吗?
你真是了解Java数组吗?
10 2
|
2天前
|
存储 JavaScript 前端开发
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
4 1
|
3天前
|
Java
Java 数组转字符串
Java 数组转字符串
|
4天前
|
Java 索引
16. 【Java教程】数组
16. 【Java教程】数组
9 0
|
7天前
|
存储 算法 搜索推荐
Java语言中的数组技术详解
Java语言中的数组技术详解
|
7天前
|
Java 编译器
Java语言中的初始化:深入探索
Java语言中的初始化:深入探索
|
7天前
|
存储 算法 Java
Java数组与集合的深入解析
Java数组与集合的深入解析
23 0