」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Java 陣列簡介

Java 陣列簡介

發佈於2024-11-07
瀏覽:273

Introduction to Arrays in Java

编程通常涉及管理和操作大量数据,对此高效且有效的数据结构至关重要。数组是计算机科学中的基本数据结构,提供了一种存储固定大小的相同类型元素序列的方法。在本博客中,我们将深入了解 Java 中的数组:了解它们是什么、它们的语法、如何对它们进行操作以及它们的内存管理。

为什么我们需要数组?

在Java中使用变量时,您可以单独声明和初始化每个变量,例如:

java
int a = 19;
String name = "John Doe";

但是,如果您需要处理同一类型的多个值,这种方法就会变得低效。例如,如果您要存储多个卷号或名称,则对每个值进行硬编码是不切实际的。数组可以让您有效地存储值的集合,从而派上用场。例如,如果您需要存储五个卷号,则可以使用数组。

什么是数组?

数组本质上是相同类型的数据项的集合。数组可以存储基本数据类型,如整数、浮点数和字符,以及对象。例如:

int[] rollNumbers = new int[5];
String[] names = {"Alice", "Bob", "Charlie"};

数组的语法

Java 中声明数组的语法很简单:

dataType[] arrayName = new dataType[size];

例如,创建一个包含五个整数的数组:

int[] rollNumbers = new int[5];

或者,您可以在一行中声明和初始化数组:

int[] rollNumbers = {23, 55, 9, 18, 45};

数组的特点

均质元素

在数组中,所有元素必须属于同一类型。您不能在单个数组中混合类型;例如:

int[] nums = {1, 2, "three"}; // Will cause a compile-time error

固定尺寸

数组一旦创建,它的大小就固定了。您无法扩大或缩小其大小。此约束通常会导致选择其他数据结构,例如 ArrayList,以满足更动态的数据需求。

内存管理

Java中的数组包括:

  • 堆栈内存:存储数组的引用变量。
  • 堆内存:存储实际的数组对象及其元素。

声明数组时,引用在栈内存中创建,数组对象存储在堆内存中。

内存分配

数组的内存分配有两个关键阶段:

  1. 声明:创建了引用变量,但它没有指向任何地方。
  2. 初始化:引用变量指向堆中实际的数组对象,其中包含元素。

例如:

int[] rollNumbers; // Declaration
rollNumbers = new int[5]; // Initialization

动态内存分配

Java执行动态内存分配,意味着在运行时,它根据需要分配内存,从而使其内存管理变得高效。

数组中的输入和输出

接受输入

要使用用户输入填充数组,您可以使用循环和扫描仪来从控制台读取输入。

Scanner scanner = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0; i 



打印阵列

您可以使用循环或 Arrays.toString() 实用方法打印数组以获得更易读的输出。

for (int i = 0; i 



或者

System.out.println(Arrays.toString(arr));

多维数组

二维数组或矩阵是数组的数组。二维数组的语法如下所示:

int[][] matrix = new int[3][3];

例子

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

为了将元素动态输入到二维数组中,使用嵌套循环。

ArrayList:动态替代方案

Java 中的数组大小固定,当编译时元素数量未知时,会导致效率低下。通过使用 ArrayList 类(Java Collections Framework 的一部分)可以克服此限制。

使用数组列表

ArrayList 类提供动态调整大小。创建 ArrayList 的语法如下:

ArrayList numbers = new ArrayList();

您可以动态添加和操作元素:

numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println(numbers); // Output: [1, 2, 3]

numbers.set(1, 10); // Change element at index 1
System.out.println(numbers); // Output: [1, 10, 3]

numbers.remove(0); // Remove element at index 0
System.out.println(numbers); // Output: [10, 3]

boolean contains = numbers.contains(10); // Check if the list contains 10
System.out.println(contains); // Output: true

ArrayList 的内部工作原理

在内部,ArrayList 使用具有初始固定容量的动态数组。当此容量耗尽时,将创建一个容量更大的新数组,并复制现有元素。这个过程确保ArrayList可以随着元素的添加而动态增长。

常见的数组操作

寻找最大元素

要查找数组中的最大元素,请迭代数组并跟踪最高值:

int max = arr[0];
for (int i = 1; i  max) {
        max = arr[i];
    }
}
System.out.println("Maximum value: "   max);

反转数组

要反转数组,请使用两指针技术:

public static void reverse(int[] arr) {
    int start = 0;
    int end = arr.length - 1;
    while (start 



调用反向函数:

int[] arr = {1, 2, 3, 4, 5};
reverse(arr);
System.out.println(Arrays.toString(arr)); // Output: [5, 4, 3, 2, 1]

结论

数组是 Java 中的关键数据结构,可以有效地存储和操作数据集。虽然大小固定,但数组在处理同类数据类型时功能强大且用途广泛。对于动态数据需求,ArrayList 提供了额外的灵活性,允许任意增长大小。了解这些结构及其操作为更高级的编程和数据管理奠定了基础。此外,练习数组操作并了解其底层内存管理有助于编写更高效和优化的代码。

版本聲明 本文轉載於:https://dev.to/bhaweshchaudhary/introduction-to-arrays-in-java-17gg?1如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    程式設計 發佈於2025-07-02
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-07-02
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, AttributeError: SomeClass...
    程式設計 發佈於2025-07-02
  • PHP未來:適應與創新
    PHP未來:適應與創新
    PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。 引言在編程世界中,PHP一直是網頁開發的中流砥柱。作為一個從1994年就開始發展...
    程式設計 發佈於2025-07-02
  • Python環境變量的訪問與管理方法
    Python環境變量的訪問與管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    程式設計 發佈於2025-07-02
  • 如何有效地選擇熊貓數據框中的列?
    如何有效地選擇熊貓數據框中的列?
    在處理數據操作任務時,在Pandas DataFrames 中選擇列時,選擇特定列的必要條件是必要的。在Pandas中,選擇列的各種選項。 選項1:使用列名 如果已知列索引,請使用ILOC函數選擇它們。請注意,python索引基於零。 df1 = df.iloc [:,0:2]#使用索引0和1 ...
    程式設計 發佈於2025-07-02
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-07-02
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-07-02
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-07-02
  • 為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    class'ziparchive'在Linux Server上安裝Archive_zip時找不到錯誤 commant in lin ins in cland ins in lin.11 on a lin.1 in a lin.11錯誤:致命錯誤:在... cass中找不到類z...
    程式設計 發佈於2025-07-02
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-02
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-07-02
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-07-02
  • 在GO中構造SQL查詢時,如何安全地加入文本和值?
    在GO中構造SQL查詢時,如何安全地加入文本和值?
    在go中構造文本sql查詢時,在go sql queries 中,在使用conting and contement和contement consem per時,尤其是在使用integer per當per當per時,per per per當per. [&​​​​&&&&&&&&&&&&&&&默元組方...
    程式設計 發佈於2025-07-02
  • JavaScript計算兩個日期之間天數的方法
    JavaScript計算兩個日期之間天數的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    程式設計 發佈於2025-07-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3