最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)組下標越界異常!

小結:

​①數(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; //結束循環(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();
        }
    }
}

總結

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

相關文章

  • SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細過程

    SpringBoot中Mybatis + Druid 數(shù)據(jù)訪問的詳細過程

    Spring Boot 底層都是采用 SpringData 的方式進行統(tǒng)一處理各種數(shù)據(jù)庫,SpringData也是Spring中與SpringBoot、SpringCloud 等齊名的知名項目,下面看下SpringBoot Mybatis Druid數(shù)據(jù)訪問的詳細過程,感興趣的朋友一起看看吧
    2021-11-11
  • Spring Cloud Stream整合RocketMQ的搭建方法

    Spring Cloud Stream整合RocketMQ的搭建方法

    本文介紹了如何使用SpringCloudStream整合RocketMQ進行消息傳遞,SpringCloudStream是一個用于構建與共享消息系統(tǒng)連接的框架,支持持久pub/sub語義和消費者組,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 地址到經(jīng)緯度坐標轉(zhuǎn)化的JAVA代碼

    地址到經(jīng)緯度坐標轉(zhuǎn)化的JAVA代碼

    這篇文章介紹了地址到經(jīng)緯度坐標轉(zhuǎn)化的JAVA代碼,有需要的朋友可以參考一下
    2013-09-09
  • 解決FeignClient Get請求參數(shù)接收不到的問題

    解決FeignClient Get請求參數(shù)接收不到的問題

    在使用FeignClient進行GET請求時,如果參數(shù)接收不到,通常是因為Feign默認將參數(shù)綁定為@RequestBody,而GET請求無法包含請求體,解決方法是在Feign接口中為參數(shù)添加@RequestParam注解,或者在SpringMVC的Controller中使用@RequestBody接收參數(shù)
    2024-11-11
  • SpringBoot中@ComponentScan的使用詳解

    SpringBoot中@ComponentScan的使用詳解

    這篇文章主要介紹了SpringBoot中@ComponentScan的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 如何通過源碼了解Java的自動裝箱拆箱詳解

    如何通過源碼了解Java的自動裝箱拆箱詳解

    裝箱就是把基本類型轉(zhuǎn)換成包裝類,拆箱就是把包裝類轉(zhuǎn)換成基本類型,下面這篇文章主要給大家介紹了關于如何通過源碼了解Java的自動裝箱拆箱的相關資料,需要的朋友可以參考下
    2022-04-04
  • SpringBoot2.X Devtools熱部署實現(xiàn)解析

    SpringBoot2.X Devtools熱部署實現(xiàn)解析

    這篇文章主要介紹了SpringBoot2.X Devtools熱部署實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • SpringCloudStream中的消息分區(qū)數(shù)詳解

    SpringCloudStream中的消息分區(qū)數(shù)詳解

    這篇文章主要介紹了SpringCloudStream中的消息分區(qū)數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 如何使用SpringSecurity保護程序安全

    如何使用SpringSecurity保護程序安全

    這篇文章主要介紹了如何使用SpringSecurity保護程序安全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 使用idea啟動DataX的方法示例

    使用idea啟動DataX的方法示例

    這篇文章主要介紹了使用idea啟動DataX的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01

最新評論

星子县| 逊克县| 南昌市| 德惠市| 华坪县| 徐汇区| 宿松县| 长宁区| 阳高县| 通渭县| 栾城县| 广德县| 南京市| 东兴市| 南阳市| 霍州市| 沅江市| 福安市| 麻城市| 沂源县| SHOW| 揭东县| 周宁县| 莱阳市| 正阳县| 焉耆| 澄城县| 仪征市| 阿尔山市| 普定县| 阜康市| 拜泉县| 宕昌县| 济南市| 宣城市| 奇台县| 紫金县| 双辽市| 无棣县| 义乌市| 邹平县|