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

Java數(shù)組從定義到操作全解析

 更新時間:2025年11月25日 09:14:42   作者:H的代碼  
這篇文章詳細介紹了Java數(shù)組的概念、聲明、創(chuàng)建、訪問、初始化、邊界、基礎操作以及Arrays類的常用方法,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

數(shù)組概述

數(shù)組的定義

  • 數(shù)組是相同數(shù)據(jù)類型數(shù)據(jù)的有序集合。
  • 數(shù)組描述的是相同類型的若干個數(shù)據(jù),按照一定的先后次序排列組合而成。
  • 其中,每一個數(shù)據(jù)稱作一個數(shù)組元素,每一個數(shù)組元素可以通過下標訪問它們。

數(shù)組聲明創(chuàng)建

  • 首先必須聲明數(shù)組變量,才能在程序中使用數(shù)組。下面是聲明數(shù)組變量(定義)的語法:
dataType[] arrayRefvar;     //首選的方法
或
dataType arrayRefVar[];     //效果相同,但不是首選方法
  • Java語言使用new操作符來創(chuàng)建數(shù)組,語法如下:
dataType[] arrayRefVar = new dataType[arraySize];
//                          數(shù)組范圍[0-arraySize)
  • 數(shù)組的元素時通過索引訪問的,數(shù)組索引從0開始。
  • 獲取數(shù)組長度:
arrays.length
  • 計算所有元素的和:
public class Demo01 {
    public static void main(String[] args) {
        //基本數(shù)據(jù)類型:變量的類型 變量的名稱 = 變量的值
        //數(shù)組類型:變量類型[] 數(shù)組名 = new 變量類型[數(shù)組大小]
        int[] nums;     //1.聲明一個數(shù)組
        nums = new int[3];     //2.創(chuàng)建一個數(shù)組
        //int[] nums = new int[10]; //1.2.等價于
        //3.給數(shù)組元素中賦值
        nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        System.out.println(nums);    //數(shù)組的地址
        //計算所有元素的和
        int sum = 0;
        //獲取數(shù)組長度:array.length
        for (int i = 0; i <nums.length ; i++) {
            sum = sum + nums[i];
        }
        System.out.println("數(shù)組和為:"+sum);
    }
}

內(nèi)存分析

數(shù)組三種初始化

靜態(tài)初始化

int[] a = {1,2,3};//靜態(tài)初始化:創(chuàng)建 + 賦值;基本類型
Man[] mans = {new Man(1,1), new Man(2,2)};//引用類型

動態(tài)初始化(包含默認初始化)

int[] a = new int[2];//聲明+初始化
a[0] = 1;   //賦值
a[1] = 2;   //賦值

數(shù)組的默認初始化

  • 數(shù)組是引用類型,它的元素相當于類的實例變量,因此數(shù)組一經(jīng)分配空間,其中的每個元素也被按照實例變量同樣的方式被隱式初始化。
public class Demo02 {
    public static void main(String[] args) {
        //靜態(tài)初始化:創(chuàng)建 + 賦值
        int[] a = {1,2,3,4,5,6,7,8,9};
        System.out.println(a[0]);
        System.out.println("------------------");
        //動態(tài)初始化:包含默認初始化
        int[] b = new int[10];
        b[0] = 10;  //對數(shù)組0號位置賦值
        b[1] = 10;  //對數(shù)組1號位置賦值
        //遍歷數(shù)組b,除了0、1號位,其余位被默認初始化
        for (int i : b) {
            System.out.print(i+"\t");
        }
    }
}

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

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

數(shù)組邊界

  • 下標的合法區(qū)間:[0,length-1],如果越界就會報錯
public static void main(String[] args){
    int[] a = new int[2];
    System.out.println(a[2]);
}
  • ArrayIndexOutOfBoundsException 數(shù)組下標越界異常

一維數(shù)組的基礎操作

public class Demo03 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        //打印全部的數(shù)組元素
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(arrays[i]);
        }
        System.out.println("----------------");
        //計算所有元素的和
        int sum = 0;
        for (int i = 0; i < arrays.length; i++) {
            sum += arrays[i];
        }
        System.out.println("數(shù)組的元素和為:"+sum);
        System.out.println("----------------");
        //查找數(shù)組內(nèi)元素的最大值
        int max = arrays[0];
        for (int i = 0; i < arrays.length; i++) {
            if (arrays[i]>max){
                max = arrays[i];
            }
        }
        System.out.println("數(shù)組內(nèi)元素的最大值為:"+max);
    }
}
?

總結(jié):

  • 數(shù)組是相同數(shù)據(jù)類型(數(shù)據(jù)類型可以為任意類型)的有序集合
  • 數(shù)組也是對象。數(shù)組元素相當于對象的成員變量
  • 數(shù)組長度是確定的,不可變的。如果越界,會報錯(ArrayIndexOutOfBoundsException)

數(shù)組使用

  • Java從JDK 5開始引入: for-each(增強型for循環(huán))
for(元素類型 變量名 : 遍歷對象) {
    // 循環(huán)體
}
  • 數(shù)組做方法入?yún)ⅲ▊鲾?shù)組打?。?/li>
  • 數(shù)組作返回值(反轉(zhuǎn)數(shù)組)
public class Demo04 {
    public static void main(String[] args) {
        //例題:將數(shù)組反轉(zhuǎn)并輸出
        int[] arrays = {1,2,3,4,5};
        //ava從JDK 5開始引入for-each,缺點:不能通過下標訪問元素進行修改
//        for (int array : arrays) {
//            System.out.println(array);
//        }
//        printArray(arrays);
        int[] reverse = reverse(arrays);    //數(shù)組作返回值
        printArray(reverse);    //數(shù)組做方法入?yún)?
    }
    //打印數(shù)組元素
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i]+" ");
        }
    }
    //反轉(zhuǎn)數(shù)組
    public static int[] reverse(int[] arrays){
        int[] result = new int[arrays.length];
        //反轉(zhuǎn)操作
        for (int i = 0,j=result.length-1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];
        }
        return result;
    }
}

多維數(shù)組

  • 多維數(shù)組可以看成是數(shù)組的數(shù)組,比如二維數(shù)據(jù)就是一個特殊的一維數(shù)組,其每一個數(shù)組元素又都是一個一維數(shù)組。
  • 二維數(shù)組
int a[][] = new int[2][5];
  • 解析:以上二維數(shù)組a可以看成一個兩行五列的數(shù)組。

二維數(shù)組的基礎操作

public class Demo05 {
    public static void main(String[] args) {
        int[][] array = {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15}};
        //1.遍歷二維數(shù)組
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.println(array[i][j]);
            }
        }
        System.out.println("-------------------");
        //2.取二維數(shù)組的所有元素和
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                sum += array[i][j];
            }
        }
        System.out.println("數(shù)組的所有元素和為:"+sum);
        System.out.println("-------------------");
        //3.取二維數(shù)組中元素的最大值
        int result = 0;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j] > result){
                    result = array[i][j];
                }
            }
        }
        System.out.println("二維數(shù)組中元素的最大值為:"+result);
        System.out.println("-------------------");
        //4.打印二維數(shù)組的第一行數(shù)據(jù)
        //方法一:
        System.out.println(array[0]);
        System.out.println(array[0][0]);
        System.out.println(array[0][1]);
        System.out.println(array[0][2]);
        System.out.println("-------------------");
        //方法二:
        printArray(array[0]);
    }
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i]+" ");
        }
    }
}

Arrays類

  • 數(shù)組的工具類Java.util.Arrays
  • 由于數(shù)組對象本身并沒有什么方法可以供我們調(diào)用,但API中提供了一個工具類Arrays供我們使用,從而可以對數(shù)據(jù)對象進行一些基本的操作。
  • Arrays類中的方法都是static修飾的靜態(tài)方法,在使用的時候可以直接使用類名進行調(diào)用,而“不用”使用對象來調(diào)用(注意:是“不用”而不是“不能”)
  • 具有以下常用功能:
    • 給數(shù)據(jù)賦值:通過fill方法。
    • 對數(shù)組排序:通過sort方法,按升序。
    • 比較數(shù)組:通過equals方法比較數(shù)組中元素值是否相等。
    • 查找數(shù)組元素:通過binarySearch方法能對排序號的數(shù)據(jù)進行二分查找法操作。
import java.util.Arrays;
public class Demo06 {
    public static void main(String[] args) {
        int[] a = {45,132,864,16,4,6,889,456,2};
        System.out.println(a); //[I@1b6d3586
        //用Arrays提供的方法(toString)打印數(shù)組的元素
        System.out.println(Arrays.toString(a));
        //通過自己創(chuàng)建的方法(printArray)來打印數(shù)組的元素
        printArray(a);
        //-----------------------------------
        System.out.println();
        //用Arrays提供的方法對數(shù)組進行排序后輸出
        Arrays.sort(a); //對數(shù)組進行排序:默認升序
        System.out.println(Arrays.toString(a));
        //-----------------------------------
        //用Arrays提供的方法對數(shù)組進行填充
        Arrays.fill(a,0);   //數(shù)組填充
        System.out.println(Arrays.toString(a));
        Arrays.fill(a,2,4,1);//對數(shù)組中的[2,4)位進行填充
        System.out.println(Arrays.toString(a));
    }
    public static void printArray(int[] a){
        for (int i = 0; i < a.length; i++) {
            if (i==0){
                System.out.print("[");
            }
            if (i==a.length-1){
                System.out.print(a[i]+"]");
            }else {
                System.out.print(a[i]+", ");
            }
        }
    }
}

例題:冒泡排序

  • 八大排序:直接插入排序、希爾排序、簡單選擇排序、堆排序、冒泡排序、快速排序、歸并排序、基數(shù)排序;冒泡排序是最出名的排序算法之一;
  • 倆層循環(huán),外層冒泡輪數(shù),里層依次進行倆數(shù)之間的比較
  • 冒泡排序算法時間復雜度是O(n^2)
import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        /*
            冒泡排序:思路
            1.比較數(shù)組中,兩個相鄰的元素,如果第一個數(shù)比第二個數(shù)大,我們就交換他們的位置
            2.每一次比較,都會產(chǎn)生出一個最大或者最小的數(shù)字
            3.下一輪則可以少一次排序(array.length-1-i)
            4.依次循環(huán),直到結(jié)束!
        */
        int[] a = {2,6,13,57,87,64,135,6,5};
        int[] sort = sort(a);
        System.out.println(Arrays.toString(sort));
    }
    public static int[] sort(int[] array){
        //臨時變量
        int temp = 0;
        //外層循環(huán),判斷數(shù)組需要進行多少次
        for (int i = 0; i < array.length-1; i++) {
            //內(nèi)層循環(huán),依次比較相鄰的兩個數(shù),如果第一個數(shù)比第二個數(shù)大,則交換位置(每一輪確定一個最大值)
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j]>array[j+1]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
        return array;
    }
}

優(yōu)化冒泡排序

import java.util.Arrays;
public class Demo08 {
    public static void main(String[] args) {
        //Demo07冒泡排序優(yōu)化
        /*
            冒泡排序
            1.比較數(shù)組中,兩個相鄰的元素,如果第一個數(shù)比第二個數(shù)大,我們就交換他們的位置
            2.每一次比較,都會產(chǎn)生出一個最大或者最小的數(shù)字
            3.下一輪則可以少一次排序(array.length-1-i)
            4.依次循環(huán),直到結(jié)束!
        */
        int[] a = {2,6,13,57,87,64,135,6,5};
        int[] sort = sort(a);
        System.out.println(Arrays.toString(sort));
    }
    public static int[] sort(int[] array){
        //臨時變量
        int temp = 0;
        //外層循環(huán),判斷數(shù)組需要進行多少次
        for (int i = 0; i < array.length-1; i++) {
            boolean flag = false;//通過flag標志位減少沒有意義的比較
            //內(nèi)層循環(huán),依次比較相鄰的兩個數(shù),如果第一個數(shù)比第二個數(shù)大,則交換位置(每一輪確定一個最大值)
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j]>array[j+1]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    flag = true;    //進行了換位flag則變成true
                }
            }
            //沒有進入內(nèi)循環(huán)判斷,說明該序列已經(jīng)是有序的了,則可以跳出循環(huán)
            if (flag==false){
                break;
            }
        }
        return array;
    }
}

到此這篇關于Java數(shù)組詳解:從定義到操作全解析的文章就介紹到這了,更多相關java數(shù)組定義內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot面試突擊之過濾器和攔截器區(qū)別詳解

    SpringBoot面試突擊之過濾器和攔截器區(qū)別詳解

    過濾器(Filter)和攔截器(Interceptor)都是基于?AOP(Aspect?Oriented?Programming,面向切面編程)思想實現(xiàn)的,用來解決項目中某一類問題的兩種“工具”,但二者有著明顯的差距,接下來我們一起來看
    2022-10-10
  • Java利用反射獲取object的屬性和值代碼示例

    Java利用反射獲取object的屬性和值代碼示例

    這篇文章主要介紹了Java利用反射獲取object的屬性和值代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java8中字符串處理庫strman-java的使用示例

    Java8中字符串處理庫strman-java的使用示例

    除了Java本身的字符串處理方式外,我們還可以使用Apache Common Langs里的StringUtils來簡化String的操作。但以上兩種方式對于我們?nèi)粘>幊讨凶钊菀着龅降淖址幚韥碚f,仍然顯得有些不足。所以這篇文章給大家介紹Java8中字符串處理庫strman-java的使用。
    2016-09-09
  • 一篇文章帶你入門java算術(shù)運算符(加減乘除余,字符連接)

    一篇文章帶你入門java算術(shù)運算符(加減乘除余,字符連接)

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運算符,結(jié)合實例形式詳細分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運算符、邏輯運算符等相關原理與操作技巧,需要的朋友可以參考下
    2021-08-08
  • Java實現(xiàn)OTP(動態(tài)口令)服務

    Java實現(xiàn)OTP(動態(tài)口令)服務

    OTP是一種動態(tài)生成的短時有效密碼,用于身份驗證,通常在登錄或執(zhí)行敏感操作時提供額外的安全保障,本文主要介紹了Java實現(xiàn)OTP(動態(tài)口令)服務,感興趣的可以了解一下
    2025-03-03
  • spring boot使用i18n時properties文件中文亂碼問題的解決方法

    spring boot使用i18n時properties文件中文亂碼問題的解決方法

    這篇文章主要介紹了spring boot使用i18n時properties文件中文亂碼問題的解決方法,需要的朋友可以參考下
    2017-11-11
  • Java?synchronized同步關鍵字工作原理

    Java?synchronized同步關鍵字工作原理

    synchronized作為Java程序員最常用同步工具,很多人卻對它的用法和實現(xiàn)原理一知半解,以至于還有不少人認為synchronized是重量級鎖,性能較差,盡量少用。但不可否認的是synchronized依然是并發(fā)首選工具,本文就來詳細講講
    2023-02-02
  • SpringBoot動態(tài)導出word文檔實整教程(復制即可使用)

    SpringBoot動態(tài)導出word文檔實整教程(復制即可使用)

    在我們做項目的時候會需要把數(shù)據(jù)庫中的數(shù)據(jù)導出到word當中,下面這篇文章主要給大家介紹了關于SpringBoot動態(tài)導出word文檔實整教程的相關資料,文中的代碼復制即可使用,需要的朋友可以參考下
    2023-06-06
  • java == 引發(fā)的線上異常詳解

    java == 引發(fā)的線上異常詳解

    這篇文章主要介紹了java == 引發(fā)的線上異常,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題

    SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題

    今天小編就為大家分享一篇關于SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論

张北县| 汉阴县| 临猗县| 海丰县| 新安县| 双牌县| 金川县| 河曲县| 通州区| 介休市| 洛隆县| 前郭尔| 东港市| 吉木乃县| 彩票| 伊金霍洛旗| 大连市| 刚察县| 拉萨市| 蒙城县| 兴文县| 宁国市| 米易县| 安国市| 灌阳县| 石城县| 新疆| 雷州市| 南漳县| 西平县| 赤水市| 班玛县| 青河县| 出国| 阿克| 沅江市| 昌图县| 临沭县| 濮阳市| 克什克腾旗| 宜阳县|