欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)組的基本操作方法整理

 更新時間:2021年06月25日 17:15:19   作者:Sleepinglion  
這篇文章主要給大家介紹了關于Java中數(shù)組的定義和使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 數(shù)組的定義

數(shù)組是相同類型數(shù)據(jù)的有序集合。

數(shù)組描述的是相同類型的若干個數(shù)據(jù),按照一定的先后次序排列組合而成。

其中,每一個數(shù)據(jù)稱作一個數(shù)組元素,每個數(shù)組元素可以通過一個下標來訪問它們。

2. 數(shù)組的聲明、創(chuàng)建

首先必須聲明數(shù)組變量,才能在程序中使用數(shù)組。下面是聲明數(shù)組變量的語法:

dataType[] arrayRefVar;		//首選的方法   			int[] array; 聲明一個int型數(shù)組array。
或
dataType arrayRefVar[];		//效果相同,但不是首選方法  int array[];

Java語言使用new操作符來創(chuàng)建數(shù)組,語法如下:

dataType[] arrayRefVar = new dataType[arraySize]; //int[] array = new int[5];

數(shù)組的元素是通過索引訪問的,數(shù)組索引從0開始。

獲取數(shù)組長度:array.length

3. 內(nèi)存分析

4. 數(shù)組的三種初始化

靜態(tài)初始化

int[] a = {1,2,3};Man[] mans = {new Man(1,1),new Man(2,2)};

動態(tài)初始化

int[] a = new int[3];a[0] = 2;a[1] = 4;a[2] = 6;

默認值初始化

  • 數(shù)組是引用類型,它的元素相當于類的實例變量,因此數(shù)組一經(jīng)分配空間,其中的每個元素也被按照實例變量同樣的方式被隱式初始化。

5. 數(shù)組的四個基本特點

  • 其長度是確定的。數(shù)組一旦被創(chuàng)建,它的大小就是不可以改變的。
  • 其元素必須是相同類型,不允許出現(xiàn)混合類型。
  • 數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括基本類型和引用類型。
  • 數(shù)組變量屬引用類型,數(shù)組也可以看成是對象,數(shù)組中的每個元素相當于該對象的成員變量。

數(shù)組本身就是對象,Java中對象是在堆中的,因此數(shù)組無論保存原始類型還是其它對象類型,

數(shù)組對象本身是在堆中的。

6. 數(shù)組邊界

下標的合法區(qū)間:[0,length-1],如果越界就會報錯;

public static void main(String[] args){
    int[] a = new int[2];
    System.out.println(a[2]);
}

ArrayIndexOutOfBoundsException:數(shù)組下標越界異常!

小結(jié):

​①數(shù)組是相同數(shù)據(jù)類型(數(shù)據(jù)類型可以為任意類型)的有序集合

​②數(shù)組也是對象。數(shù)組元素相當于對象的成員變量

​③數(shù)組長度是確定的,不可變得。如果越界,則報:ArrayIndexOutOfBounds

7. 數(shù)組的使用

7.1 普通For循環(huán)

​使用最多。

7.2 For-Each循環(huán)

​用于打印數(shù)組,無下標。

//增強for循環(huán):For-each循環(huán);JDK1.5開始,沒有下標
int[] arrays = {1,3,8,6,2};
for (int array : arrays) {
    System.out.println(array);
}

7.3 數(shù)組作方法入?yún)?/h3>
//打印數(shù)組元素  <數(shù)組作方法入?yún)?gt;
public static void arrayPrint(int[] arrays){
	for (int i = 0; i <arrays.length ; i++) {
    	System.out.print(arrays[i] + " ");
    }
}

7.4 數(shù)組作返回值

//反轉(zhuǎn)數(shù)組  <數(shù)組作返回值>
    public static int[] reverse(int[] arrays){
        int[] arr = new int[arrays.length];
    /*
        for(int i = 0,j = arr.length - 1;i < arrays.length;i++,j--){
            arr[j] = arrays[i];
        }
    */
        for (int i = arrays.length - 1; i >= 0 ; i--) {
            int j = 0;
            if(j < arrays.length) {
                arr[j] = arrays[i];
                System.out.print(arr[j] + " ");
            }
            j++;
        }
        return arr;
    }

8. 二維數(shù)組

多維數(shù)組可以看成是數(shù)組的數(shù)組,比如二維數(shù)組就是一個特殊的一位數(shù)組,其每一個元素都是一個一位數(shù)組。二維數(shù)組:

int[][] a = new int[2][5]	//二維數(shù)組a可以看成一個兩行五列的數(shù)組。

9. Arrays類

數(shù)組的工具類java.util.Arrays

由于數(shù)組對象本身并沒有什么方法可以供我們調(diào)用,但API中提供了一個工具類Arrays供我們使用,從而可以對數(shù)據(jù)對象進行一些基本的操作。

查看JDK幫助文檔

Arrays類中的方法都是static修飾的靜態(tài)方法,在使用的時候可以直接使用類名進行調(diào)用,而“不用”使用對象來調(diào)用(注意:是“不用”而不是“不能”!)

具有以下常用方法:

//打印數(shù)組的三種方式:
import java.util.Arrays;
public class ArrayDemo6 {
    public static void main(String[] args) {
        int[] arr = {5,7,8,28,6};
        //System.out.println(arr); //[I@1b6d3586 數(shù)組對象arr地址的哈希值
        //打印數(shù)組一: 調(diào)用Arrays類的toString()方法
        System.out.println(Arrays.toString(arr));
        System.out.println("****************");
        //打印數(shù)組二:調(diào)用返回值類型為void的arrayPrint1()方法
        arrayPrint1(arr);
        System.out.println();
        System.out.println("-----------------");
        //打印數(shù)組三:調(diào)用返回值類型為String的arrayPrint2()方法
        String str = arrayPrint2(arr);
        System.out.println(str);
    }
    //打印數(shù)組的方法:
    //   ①返回值類型為void時:arrayPrint1();
    public static void arrayPrint1(int[] arrays){
        System.out.print("[");
        for(int i = 0;i < arrays.length;i++) {
            if (i == arrays.length - 1) {
                System.out.print(arrays[i] + "]");
                return; //終止方法
            }
            System.out.print(arrays[i] + ", ");
        }
    }
    //   ②返回值類型為String時:arrayPrint2();
    public static String arrayPrint2(int[] arrays){
        String result = "[";
        for(int i = 0;i < arrays.length;i++) {
            if (i == arrays.length - 1) {
                result += (arrays[i] + "]");
                break; //結(jié)束循環(huán)
            }
            result += (arrays[i] + ", ");
        }
        return result;
    }
}

10. 冒泡排序

import java.util.Arrays;
public class ArrayDemo9 {
    public static void main(String[] args) {
        int[] arr = {8,5,9,3,1,0,7,6};
        sort(arr);
        System.out.println(Arrays.toString(sort(arr)));
    }
    //冒泡排序:
    public static int[] sort(int[] array){
        //臨時變量
        int temp = 0;
        for(int i = 0;i < array.length - 1;i++){
            for (int j = 0; j < array.length - 1 - i; j++) {
                if(array[j] > array[j+1]){
                    //如果后一個數(shù)比前一個大,就交換位置
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
        return array;
    }
}

冒泡排序算法優(yōu)化:

11. 稀疏數(shù)組

//稀疏數(shù)組 △!!
public class ArrayDemo10 {
    public static void main(String[] args) {
         int[][] arr = new int[11][11];
         arr[1][2] = 1;
         arr[2][3] = 2;
        System.out.println("輸出原始的數(shù)組:");
         //輸出數(shù)組
        for(int[] array:arr){
            for(int a:array){
                System.out.print(a + "\t");
            }
            System.out.println();
        }
        System.out.println("==========================================");
        //轉(zhuǎn)化為稀疏數(shù)組保存:
        //  1.獲取有效值個數(shù)
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if(arr[i][j] != 0){
                    sum++;
                }
            }
        }
        System.out.println("有效值個數(shù):" + sum);
        System.out.println("轉(zhuǎn)化后的稀疏數(shù)組:\n" + "行\(zhòng)t" +"列\(zhòng)t" + "值\t" );
        //  2.創(chuàng)建一個稀疏數(shù)組的數(shù)組
        int[][] arr2 =new int[sum+1][3];
        arr2[0][0] = 11;
        arr2[0][1] = 11;
        arr2[0][2] = sum;
        //  3.遍歷二維數(shù)組,將非零的值,存放稀疏數(shù)組中
        int k = 1;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if(arr[i][j] != 0){ //將非0的值,存放在稀疏數(shù)組
                    arr2[k][0] = i;
                    arr2[k][1] = j;
                    arr2[k][2] = arr[i][j];
                    k++;
                }
            }
            //優(yōu)化:當k大于有效值個數(shù)時,說明后續(xù)值都為0,不用再遍歷,直接退出整個循環(huán)體。
            if(k > sum){
                break;
            }
        }
        //  4.輸出轉(zhuǎn)化后的稀疏數(shù)組
        for(int[] array:arr2){
            for(int a:array){
                System.out.print(a + "\t");
            }
            System.out.println();
        }
        //還原
        System.out.println("==================================");
        System.out.println("稀疏數(shù)組的還原:");
        //  1、讀取稀疏數(shù)組
        int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];
        //  2、給其中的元素還原它的值
        for (int i = 1; i < arr2.length; i++) {
            arr3[arr2[i][0]][arr2[i][1]] = arr2[i][2];
        }
        //  3、打印
        for (int[] array:arr3) {
            for (int a:array) {
                System.out.print(a + "\t");
            }
            System.out.println();
        }
    }
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • java可以作為第一門編程語言學習嗎

    java可以作為第一門編程語言學習嗎

    在本篇內(nèi)容里小編給JAVA零基礎的網(wǎng)友分享一篇關于java可以作為第一門編程語言學習嗎的文章,有興趣的朋友們可以參考下。
    2020-11-11
  • Java高效映射工具MapStruct的使用示例

    Java高效映射工具MapStruct的使用示例

    MapStruct 是一個 Java 注解處理器,用于在不同 Java Beans 或數(shù)據(jù)傳輸對象(DTOs)之間自動生成類型安全的映射代碼,這是一個編譯時映射框架,意味著它利用注解在編譯時生成代碼,本文將給大家介紹一下Java注解處理器MapStruct的使用示例,需要的朋友可以參考下
    2023-12-12
  • mybatis教程之增刪改查_動力節(jié)點Java學院整理

    mybatis教程之增刪改查_動力節(jié)點Java學院整理

    這篇文章主要介紹了mybatis教程之增刪改查,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • java實現(xiàn)數(shù)據(jù)結(jié)構(gòu)單鏈表示例(java單鏈表)

    java實現(xiàn)數(shù)據(jù)結(jié)構(gòu)單鏈表示例(java單鏈表)

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)單鏈表示例,需要的朋友可以參考下
    2014-03-03
  • 基于Java中進制的轉(zhuǎn)換函數(shù)詳解

    基于Java中進制的轉(zhuǎn)換函數(shù)詳解

    下面小編就為大家?guī)硪黄贘ava中進制的轉(zhuǎn)換函數(shù)詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Jmeter非GUI模式運行分布式測試

    Jmeter非GUI模式運行分布式測試

    這篇文章主要介紹了Jmeter非GUI模式運行分布式測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Springboot 整合 Java DL4J 實現(xiàn)農(nóng)產(chǎn)品質(zhì)量檢測系統(tǒng)(推薦)

    Springboot 整合 Java DL4J 實現(xiàn)農(nóng)產(chǎn)品質(zhì)量檢測系統(tǒng)(推薦)

    本文詳細介紹了系統(tǒng)的搭建過程,包括技術選型、數(shù)據(jù)處理、模型訓練和評估等關鍵步驟,系統(tǒng)采用卷積神經(jīng)網(wǎng)絡,對水果成熟度和缺陷進行識別,有效解決了傳統(tǒng)方法成本高、效率低的問題,有助于提升農(nóng)產(chǎn)品檢測的科技含量和自動化水平
    2024-10-10
  • Java實現(xiàn)Kafka生產(chǎn)者和消費者的示例

    Java實現(xiàn)Kafka生產(chǎn)者和消費者的示例

    這篇文章主要介紹了Java實現(xiàn)Kafka生產(chǎn)者和消費者的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Springboot詳解RocketMQ實現(xiàn)廣播消息流程

    Springboot詳解RocketMQ實現(xiàn)廣播消息流程

    RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務消息、順序消息、批量消息、定時消息、消息回溯等,本篇我們了解如何實現(xiàn)廣播消息
    2022-06-06
  • 關于IntelliJ IDEA 打包代碼報錯的問題

    關于IntelliJ IDEA 打包代碼報錯的問題

    這篇文章主要介紹了關于IntelliJ IDEA 打包代碼報錯的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論