java中的一維數組

来源:https://www.cnblogs.com/e-link/archive/2022/09/01/16645068.html
-Advertisement-
Play Games

數組(array):是一種用於存儲多個相同數據類型的存儲模型(可以理解為容器) 數組定義和靜態初始化 數組的兩種定義格式: 格式1: 數據類型[] 變數名; 範例: int[] arr; // 定義了一個int類型的數組,數組名是arr 格式2: 數據類型 變數名[]; 範例: int arr[]; ...


數組(array):是一種用於存儲多個相同數據類型的存儲模型(可以理解為容器)

數組定義和靜態初始化

數組的兩種定義格式:

  格式1:

    數據類型[] 變數名;

    範例: int[] arr; // 定義了一個int類型的數組,數組名是arr

  格式2:

    數據類型 變數名[];

    範例: int arr[]; 定義了一個int類型的變數,變數名是arr數組

public class Test {
public static void main(String args[ ]) {
    int[ ] s; // 聲明數組;
    s = new int[10]; // 動態初始化。給數組分配空間;
    for (int i = 0; i < 10; i++) {  // 遍曆數組
        s[i] = 2 * i + 1;//給數組元素賦值; 數組是對象,數組中的元素就是對象的屬性
        System.out.println(s[i]);
        } 
    }
}

 

靜態初始化

  初始化時指定每個數組元素的初始值,由系統決定數組長度

  格式:

    數據類型[] 變數名 = new 數據類型[]{數據1,數據2,數據3,…};

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

  簡化格式

   數據類型[] 變數名 = {數據1,數據2,數據3,…};

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

動態初始化

  動態初始化:初始化時只指定數組長度,由系統為數組分配初始值     

  格式:

    數據類型[ ] 變數名 = new 數據類型 [數組長度];       // new:開闢數組記憶體空間

  範例:

    int[] arr = new int[3]; 表示我們定義了一個int類型的數組,初始化為3個元素。

          • 靜態初始化:開始就存入元素值,適合一開始就能確定元素值的業務場景
          • 動態初始化:指定數組長度,後期賦值,適合開始知道數據的數量,但是不確定具體元素值的業務場景
          • 註意:兩種初始化的方式是獨立的,不可以混用

  數組使用中的兩個小問題

    1:索引越界:訪問了數組中不存在的索引對應的元素,造成索引越界問題

            ArrayIndexOutOfBoundsException

    2:空指針異常:對象不再指向堆記憶體,還想繼續訪問數據,訪問失敗

            NullPointerException

    3:null:空值,引用數據類型的預設值,表示不指向任何有效對象

數組的遍歷

          數組特征:

      ①:索引從0開始

      ②:索引是連續的

      ③:索引逐一增加,每次加1

 數組元素下標的合法區間:[0, length-1]。我們可以通過下標來遍曆數組中的元素,遍 歷時可以讀取元素的值或者修改元素的值。

使用迴圈初始化和遍曆數

public class Test {
    public static void main(String[ ] args) {
        int[ ] a = new int[4]; // 動態初始化
//初始化數組元素的值
        for(int i=0;i<a.length;i++){
            a[i] = 100*i;
        }
//讀取元素的值
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }
} 

for-each 迴圈

for-each 專門用於讀取數組或容器中所有的元素。

public class Test {
    public static void main(String[ ] args) {
        String[ ] ss = { "aa", "bbb", "ccc", "ddd" }; // 【靜態初始化】定義一個字元串數組
        for (String temp : ss) {
            System.out.println(temp);
        }
    }
}
  • for-each 增強 for 迴圈在遍曆數組過程中不能修改數組中某元素的值。 
  • for-each 僅適用於遍歷,不涉及有關索引(下標)的操作

數組常見操作之獲取最大值

public class ArrayTest {
    public static void main(String[] args) {
//定義數組
        int[] arr = {12, 45, 98, 73, 60};
//定義變數max存儲最大值,取第一個數據為變數的初始值
        int max = arr[0];
//將這個max初始值與數組中剩餘數據逐個比對,每次比對將最大值覆蓋到變數max中
        for (int i=1; i<arr.length; i++) {
            if(arr[i] > max) {
                max = arr[i];
            }
        }
//迴圈結束後輸出變數max的值
        System.out.println("max:" + max);
    }
}

數組常見操作之元素打亂

public class ArrayTesttwo {
    public static void main(String[] args) {
//定義數組
        int[] arr = {12, 45, 98, 73, 60}; // 靜態初始化一個整型數組
        Random r = new Random();  // 生成隨機數
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(arr.length);
            int temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
//遍曆數組
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

關於random類的一些方法

import java.util.Random;

public class Test06 {
    public static void main(String[] args) {
        Random r = new Random();
        double d1 = r.nextDouble(); // 生成[0,1.0]區間的小數
        double d2 = r.nextDouble() * 7; // 生成[0,7.0]區間的小數 
     // 如果是加“+”,則區間裡面的數都要加“例如 * 7 改為 + 1,區間裡面為99,--則最終區間範圍為:1-100”
     double d2 = r.nextDouble() + 1;  // 則最終區間範圍為:1-100
        int i1 = r.nextInt(10); // 生成[0,10]區間的整數
        int i2 = r.nextInt(18) - 3; // 生成[-3,15)區間的整數
        long l1 = r.nextLong(); // 生成一個隨機長整型值
        boolean b1 = r.nextBoolean(); // 生成一個隨機布爾型值
        float f1 = r.nextFloat(); // 生成一個隨機浮點型值
        System.out.println("生成的[0,1.0]區間的小數是:" + d1);
        System.out.println("生成的[0,7.0]區間的小數是:" + d2);
        System.out.println("生成的[0,10]區間的整數是:" + i1);
        System.out.println("生成的[-3,15]區間的整數是:" + i2);
        System.out.println("生成一個隨機長整型值:" + l1);
        System.out.println("生成一個隨機布爾型值:" + b1);
        System.out.println("生成一個隨機浮點型值:" + f1);
        System.out.print("下期七星彩開獎號碼預測:");
        for (int i = 1; i < 8; i++) {
            int num = r.nextInt(9); // 生成[0,9]區間的整數
            System.out.print(num);
        }
    }
}
本實例每次運行時結果都不相同,這就實現了隨機產生數據的功能。該程式的運行結果如下:
生成的[0,1.0]區間的小數是:0.8773165855918825
生成的[0,7.0]區間的小數是:6.407083074782282
生成的[0,10]區間的整數是:5
生成的[-3,15]區間的整數是:4
生成一個隨機長整型值:-8462847591661221914
生成一個隨機布爾型值:false
生成一個隨機浮點型值:0.6397003
下期七星彩開獎號碼預測:0227168

數組的拷貝

  System.arraycopy(object src,int srcpos,object dest, int destpos,int length)

  該方法可以將 src 數組裡的元素值賦給 dest 數組的元素,其中 srcpos 指定從 src 數組的第幾個 元素 開始賦值

  length 參數指定將 src 數組的多少個元素賦給 dest 數組的元素

public class Test {
    public static void main(String args[ ]) {
     // 一個靜態初始化數組,一個賦有值,一個動態初始化數組,只分配數組記憶體空間 String[ ] s
= {"阿裡","位元組","京東","搜狐","網易"}; String[ ] sBak = new String[6]; System.arraycopy(s,0,sBak,0,s.length); for (int i = 0; i < sBak.length; i++) { System.out.print(sBak[i]+ "\t"); } } }

java.util.Arrays 類

Arrays 類包含了:排序、查找、填充、列印內容等常見的數組操作。

import java.util.Arrays;
public class Test {
    public static void main(String args[ ]) {
        int[ ] a = { 1, 2 }; // 靜態初始化一個2個元素的int型
        System.out.println(a); // 列印數組引用的值;
        System.out.println(Arrays.toString(a)); // 列印數組元素的值;
    }
}

直接列印a,出來的是其地址;Arrays.toString(a)直接遍歷列印出數組的元素

 

 

此處的 Arrays.toString()方法是 Arrays 類的靜態方法,不是前面講的 Object 的 toString() 方法。

使用 Arrays 類對數組元素進行排序

import java.util.Arrays;

class Test {
    public static void main(String args[]) {
        int[] a = {1, 2, 323, 23, 543, 12, 59};
        System.out.println(Arrays.toString(a));
        Arrays.sort(a); // sort(); 排序方法 將指定數組按升序排序。
        System.out.println(Arrays.toString(a));
    }
}

 

 

 使用 Arrays 類對數組進行填充 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int[] a = {1, 2, 323, 23, 543, 12, 59};
        System.out.println(Arrays.toString(a));
        Arrays.fill(a, 2, 4, 100); //把數組a中的2到4索引的元素替換為100;     
        System.out.println(Arrays.toString(a)); 
    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 顧名思義,如何建房子一樣,建造者模式可以將複雜對象的建造過程抽象出來,使用相同的構建過程可以構造出不同表現的對象。 ...
  • 山河遠闊,煙火人間,又一年,千里嬋娟~ 今天給大家帶來的是給玉兔投喂月餅的小游戲。八月十五中秋夜晚,讓我們對著月亮許願:希望我們在意和在意我們的人,諸邪避退、百事無忌、平安喜樂、萬事勝意。提前祝大家中秋節快樂。 中秋節的起源 中秋節起源於上古時代,普及於漢代,定型於唐朝初年,盛行於宋朝以後。中秋節是 ...
  • 目錄 一.OpenGL 圖像飽和度調節 1.原始圖片 2.效果演示 二.OpenGL 圖像飽和度調節源碼下載 三.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學 ...
  • JavaGUI-坦克大戰 1.Java繪圖坐標體系 坐標體系介紹:下圖說明瞭一個Java坐標體系。坐標原點位於左上角,以像素為單位。在Java坐標體系中,第一個是x坐標,表示當前位置為水平方向,距離坐標原點x個像素;第二個是y坐標,表示當前位置為垂直方向,距離坐標原點y個像素。 坐標體系-像素: 繪 ...
  • Spring-04 聲明式事務 1、事務的定義 事務就是由一組邏輯上緊密關聯的多個工作單元(資料庫操作)而合併成一個整體,這些操作要麼都執行,要麼都不執行。 2、事務的特性:ACID 1)原子性A :原子即不可再分,表現:一個事務涉及的多個操作在業務邏輯上缺一不可,保證同一個事務中的操作要不都提交, ...
  • Vector底層實現 vector的三個私有成員 :_start 記錄初始位置 , _finish 記錄有效字元 , _endofstoage 記錄容量大小 vector會存儲的類型不同,所以要用模版來定類型 typedef T* iterator; iterator _start; iterato ...
  • Java註解 1.註解的理解 註解(Annotation)也被稱為元數據(Metadata),用於修飾解釋 包、類、方法、屬性、構造器、局部變數等數據信息 和註釋一樣,註解不影響程式邏輯,但註解可以被編譯或者運行,相當於嵌入在代碼中的補充信息 在JavaSE中,註解的使用目的比較簡單,例如標記過時的 ...
  • 前言 嗨嘍~大家好呀,這裡是魔王吶 ! 又是學習的一天,讓我們開始叭~ 環境使用: Python 3.8 Pycharm 模塊使用: requests >>> pip install requests re csv 如果安裝python第三方模塊: win + R 輸入 cmd 點擊確定, 輸入安裝 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...