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

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

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

1. 數(shù)組的定義

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

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

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

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

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

dataType[] arrayRefVar;		//首選的方法   			int[] array; 聲明一個(gè)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)};

動(dòng)態(tài)初始化

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

默認(rèn)值初始化

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

5. 數(shù)組的四個(gè)基本特點(diǎn)

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

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

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

6. 數(shù)組邊界

下標(biāo)的合法區(qū)間:[0,length-1],如果越界就會(huì)報(bào)錯(cuò);

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

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

小結(jié):

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

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

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

7. 數(shù)組的使用

7.1 普通For循環(huán)

​使用最多。

7.2 For-Each循環(huán)

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

//增強(qiáng)for循環(huán):For-each循環(huán);JDK1.5開始,沒有下標(biāo)
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ù)組就是一個(gè)特殊的一位數(shù)組,其每一個(gè)元素都是一個(gè)一位數(shù)組。二維數(shù)組:

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

9. Arrays類

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

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

查看JDK幫助文檔

Arrays類中的方法都是static修飾的靜態(tài)方法,在使用的時(shí)候可以直接使用類名進(jìn)行調(diào)用,而“不用”使用對(duì)象來調(diào)用(注意:是“不用”而不是“不能”?。?/p>

具有以下常用方法:

//打印數(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ù)組對(duì)象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時(shí):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時(shí):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){
        //臨時(shí)變量
        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]){
                    //如果后一個(gè)數(shù)比前一個(gè)大,就交換位置
                    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.獲取有效值個(gè)數(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("有效值個(gè)數(shù):" + sum);
        System.out.println("轉(zhuǎn)化后的稀疏數(shù)組:\n" + "行\(zhòng)t" +"列\(zhòng)t" + "值\t" );
        //  2.創(chuàng)建一個(gè)稀疏數(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)化:當(dāng)k大于有效值個(gè)數(shù)時(shí),說明后續(xù)值都為0,不用再遍歷,直接退出整個(gè)循環(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é)

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

相關(guān)文章

最新評(píng)論