国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用

這篇具有很好參考價值的文章主要介紹了【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)組的概念

什么是Java中的數(shù)組

數(shù)組:可以看成是相同類型元素的一個集合。在內(nèi)存中是一段連續(xù)的空間。在java中,包含6個整形類型元素的數(shù)組,可以看做是酒店中連續(xù)的6個房間.

1. 數(shù)組中存放的元素其類型相同

2. 數(shù)組的空間是連在一起的

3. 每個空間有自己的編號,其實位置的編號為0,即數(shù)組的下標(biāo)?

數(shù)組的創(chuàng)建和初始化

數(shù)組的創(chuàng)建

topy[] 數(shù)組名 = new array[n];

topy:表示數(shù)組中存放元素的類型

topy[]:表示數(shù)組的類型

n:表示數(shù)組的長度

int[] array1 = new int[10]; // 創(chuàng)建一個可以容納10個int類型元素的數(shù)組
double[] array2 = new double[5]; // 創(chuàng)建一個可以容納5個double類型元素的數(shù)組
String[] array3 = new double[3]; // 創(chuàng)建一個可以容納3個字符串元素的數(shù)組

數(shù)組的初始化

數(shù)組的初始化主要分為動態(tài)初始化以及靜態(tài)初始化?

動態(tài)初始化: 在創(chuàng)建數(shù)組的時侯,直接指定數(shù)組中的元素個數(shù)?

int[] array = new int[10];

靜態(tài)初始化: 在創(chuàng)建數(shù)組的時候,不直接指定元素個數(shù),但是直接將具體的數(shù)據(jù)放入數(shù)組中

int[] array = {1,2,3,4,5,6}

栗子:

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

注意:

靜態(tài)初始化雖然沒有指定數(shù)組的長度,編譯器在編譯時會根據(jù){}中元素個數(shù)來確定數(shù)組的長度。

靜態(tài)初始化時, {}中數(shù)據(jù)類型必須與[]前數(shù)據(jù)類型一致。

靜態(tài)初始化可以簡寫,省去后面的new T[]。
?

這里靜態(tài)和動態(tài)初始化也可以分為兩步,但是省略格式不可以?

int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20, 30};
// 注意省略格式不可以拆分, 否則編譯失敗
// int[] array3;
// array3 = {1, 2, 3};

如果沒有對數(shù)組進行初始化,數(shù)組中元素有其默認值

如果數(shù)組中存儲元素類型為基類類型,默認值為基類類型對應(yīng)的默認值

【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用,# JAVASE語法系列,JAVA,java,開發(fā)語言

如果數(shù)組中存儲元素類型為引用類型,默認值為null?

數(shù)組的使用

數(shù)組中元素的訪問

?數(shù)組在內(nèi)存中是一段連續(xù)的空間,空間的編號都是從0開始的,依次遞增,該編號稱為數(shù)組的下標(biāo),數(shù)組可以通過下標(biāo)訪問其任意位置的元素??

int[]array = new int[]{10, 20, 30, 40, 50};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
// 也可以通過[]對數(shù)組中的元素進行修改
array[0] = 100;
System.out.println(array[0]);

?注意:
數(shù)組是一段連續(xù)的內(nèi)存空間,因此支持隨機訪問,即通過下標(biāo)訪問快速訪問數(shù)組中任意位置的

下標(biāo)從0開始,介于[0, N)之間不包含N,N為元素個數(shù),不能越界,否則會報出下標(biāo)越界常。?

遍歷數(shù)組

遍歷就是說將數(shù)組中的所有元素都訪問一遍,訪問可以將數(shù)組的所有元素進行打印。

栗子:
這里我們通過循環(huán)遍歷來賦值和打印,也可以使用foreach來遍歷打印。

for-each 是 for 循環(huán)的另外一種使用方式. 能夠更方便的完成對數(shù)組的遍歷. 可以避免循環(huán)條件和更新語句寫錯

   public static void main(String[] args) {
        int[] array = new int[10];
        //通過遍歷賦值
        for (int i = 0; i < array.length; i++) {
            array[i] = i+1;
        }
        //循環(huán)遍歷打印
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        //用foreach遍歷
        for (int x: array) {
            System.out.print(x);
            
        }
        

注意:在數(shù)組中可以通過 數(shù)組對象.length 來獲取數(shù)組的長度?

引用類型 - 數(shù)組

JVM的內(nèi)存分布?

內(nèi)存是一段連續(xù)的存儲空間,主要用來存儲程序運行時數(shù)據(jù)的,

1. 程序運行時代碼需要加載到內(nèi)存

2. 程序運行產(chǎn)生的中間數(shù)據(jù)要存放在內(nèi)存

3. 程序中的常量也要保存

4. 有些數(shù)據(jù)可能需要長時間存儲,而有些數(shù)據(jù)當(dāng)方法運行結(jié)束后就要被銷毀?

所以呢,JVM也對所使用的內(nèi)存按照功能的不同進行了劃分:?

【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用,# JAVASE語法系列,JAVA,java,開發(fā)語言

?這里介紹一下上面的幾個區(qū)分:

程序計數(shù)器: 只是一個很小的空間, 保存下一條執(zhí)行的指令的地址

虛擬機棧: 與方法調(diào)用相關(guān)的一些信息,每個方法在執(zhí)行時,都會先創(chuàng)建一個棧幀,棧幀中包含
有:局部變量表、操作數(shù)棧、動態(tài)鏈接、返回地址以及其他的一些信息,保存的都是與方法執(zhí)行時相關(guān)的一些信息。比如:局部變量。當(dāng)方法運行結(jié)束后,棧幀就被銷毀了,即棧幀中保存的數(shù)據(jù)也被銷毀了。

本地方法棧: 本地方法棧與虛擬機棧的作用類似. 只不過保存的內(nèi)容是Native方法的局部變量. 在有些版本的 JVM 實現(xiàn)中(例如HotSpot), 本地方法棧和虛擬機棧是一起的

堆: JVM所管理的最大內(nèi)存區(qū)域. 使用 new 創(chuàng)建的對象都是在堆上保存 (例如前面的 new int[]{1, 2,
3} ),堆是隨著程序開始運行時而創(chuàng)建,隨著程序的退出而銷毀,堆中的數(shù)據(jù)只要還有在使用,就不會被銷毀。

方法區(qū): 用于存儲已被虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)
據(jù).
方法編譯出的的字節(jié)碼就是保存在這個區(qū)域?

基本類型變量與引用類型變量的區(qū)別

基本數(shù)據(jù)類型創(chuàng)建的變量,稱為基本變量,該變量空間中直接存放的是其所對應(yīng)的值;

而引用數(shù)據(jù)類型創(chuàng)建的變量,一般稱為對象的引用,其空間中存儲的是對象所在空間的地址。

下面的代碼,a、b、arr,都是函數(shù)內(nèi)部的變量,因此其空間都在main方法對應(yīng)的棧幀中分配。
a、b是內(nèi)置類型的變量,因此其空間中保存的就是給該變量初始化的值。array是數(shù)組類型的引用變量,其內(nèi)部保存的內(nèi)容可以簡單理解成是數(shù)組在堆空間中的首地址。

public static void func() {
int a = 10;
int b = 20;
int[] arr = new int[]{1,2,3};
}

【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用,# JAVASE語法系列,JAVA,java,開發(fā)語言

?從上圖可以看到,引用變量并不直接存儲對象本身,可以簡單理解成存儲的是對象在堆中空間的起始地址。通過該地址,引用變量便可以去操作對象。有點類似C語言中的指針,但是Java中引用要比指針的操作更簡單

具體分析引用變量

public static void func() {
int[] array1 = new int[3];
array1[0] = 10;
array1[1] = 20;
array1[2] = 30;
int[] array2 = new int[]{1,2,3,4,5};
array2[0] = 100;
array2[1] = 200;
array1 = array2;
array1[2] = 300;
array1[3] = 400;
array2[4] = 500;
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
}

【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用,# JAVASE語法系列,JAVA,java,開發(fā)語言

java中的null

null 在 Java 中表示 "空引用" , 也就是一個不指向?qū)ο蟮囊?

int[] arr = null;
System.out.println(arr[0]);
// 執(zhí)行結(jié)果
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:6)

?null 的作用類似于 C 語言中的 NULL (空指針), 都是表示一個無效的內(nèi)存位置. 因此不能對這個內(nèi)存進行任何讀寫操作. 一旦嘗試讀寫, 就會拋出 NullPointerException.(可以理解為空指針異常)

Java 中并沒有約定 null 和 0 號地址的內(nèi)存有任何關(guān)聯(lián)??

數(shù)組的應(yīng)用

保存數(shù)據(jù)

public static void main(String[] args) {
int[] array = {1, 2, 3};
for(int i = 0; i < array.length; ++i){
System.out.println(array[i] + " ");
}
}

作為函數(shù)的參數(shù)?

函數(shù)傳基本類型:

public static void main(String[] args) {
int num = 0;
func(num);
System.out.println("num = " + num);
}
public static void func(int x) {
x = 10;
System.out.println("x = " + x);
} /
/ 執(zhí)行結(jié)果
x = 10
num = 0

這里在func方法中修改形參 x 的值, 不影響實參的 num 值

參數(shù)傳數(shù)組類型,也就是引用類型:

public static void main(String[] args) {
int[] arr = {1, 2, 3};
func(arr);
System.out.println("arr[0] = " + arr[0]);
}
public static void func(int[] a) {
a[0] = 10;
System.out.println("a[0] = " + a[0]);
}
 // 執(zhí)行結(jié)果
a[0] = 10
arr[0] = 10

發(fā)現(xiàn)在func方法內(nèi)部修改數(shù)組的內(nèi)容, 方法外部的數(shù)組內(nèi)容也發(fā)生改變.因為數(shù)組是引用類型,按照引用類型來進行傳遞(可以理解為傳的是地址),是可以修改其中存放的內(nèi)容的? ?

總結(jié): 所謂的 "引用" 本質(zhì)上只是存了一個地址. Java 將數(shù)組設(shè)定成引用類型, 這樣的話后續(xù)進行數(shù)組參數(shù)傳參, 其實只是將數(shù)組的地址傳入到函數(shù)形參中. 這樣可以避免對整個數(shù)組的拷貝(數(shù)組可能比較長, 那么拷貝開銷就會很大)

作為函數(shù)的返回值?

直接上代碼:

求斐波那契數(shù)的前n項:

public class TestArray {
public static int[] fib(int n){
if(n <= 0){
return null;
} in
t[] array = new int[n];
array[0] = array[1] = 1;
for(int i = 2; i < n; ++i){
array[i] = array[i-1] + array[i-2];
} r
eturn array;
}
public static void main(String[] args) {
int[] array = fib(10);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}

數(shù)組練習(xí)?

數(shù)組變字符串

使用Java 中提供了 java.util.Arrays 包:

    public static void main5(String[] args) {
        int[] array ={1,2,3,4,5,5,7,8};
       String Arr =  Arrays.toString(array);
       //String Arr = My_Arrays(array);
        System.out.println(Arr);
    }

自己定義一個方法:

    public static void main5(String[] args) {
        int[] array ={1,2,3,4,5,5,7,8};
       //String Arr =  Arrays.toString(array);
       String Arr = My_Arrays(array);
        System.out.println(Arr);
    }
    public static String My_Arrays(int[] array) {
        if(array.length == 0) {
            return "[]";
        }
        String ret = "[";
        for (int i = 0; i < array.length; i++) {
            ret += array[i];
            if(i < array.length - 1) {
                ret += ",";
            }
        }
        ret += "]";
        return ret;
    }

數(shù)組拷貝?

使用了Arrays包中的拷貝方法去:

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7,8,9,10};
        int[] newArr = new  int[10];
        newArr = Arrays.copyOf(array, array.length);

        for (int i = 0; i < array.length; i++) {
            System.out.print(newArr[i] + " ");
        }
    }

區(qū)域拷貝:

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7,8,9,10};
        int[] newArr = new int[10];
        newArr = Arrays.copyOf(array, array.length);

        int[] newArr2 = new int[10];
        newArr2 = Arrays.copyOfRange(array, 2, 5);

        for (int i = 0; i < array.length; i++) {
            System.out.print(newArr[i] + " ");
        }
        System.out.println();
        for (int i = 0; i < 3; i++) {
            System.out.print(newArr2[i] + " ");
        }
    }

二維數(shù)組

Java中的二維數(shù)組本質(zhì)上也是一維數(shù)組,每個元素又是一個一維數(shù)組。

基本語法:

數(shù)據(jù)類型[][] 數(shù)組名稱 = new 數(shù)據(jù)類型 [行數(shù)][列數(shù)] { 初始化數(shù)據(jù) };

栗子:

int[][] arr = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};
for (int row = 0; row < arr.length; row++) {
for (int col = 0; col < arr[row].length; col++) {
System.out.printf("%d\t", arr[row][col]);
} System.out.println("");
}

這里大家要記住一個點:二維數(shù)組中的行標(biāo)存的就是對應(yīng)每一列的地址,通過地址來找到它們,可以將int[i] arr看做 地址。其他的,二維數(shù)組的用法和一維數(shù)組就沒有明顯差別了。

【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用,# JAVASE語法系列,JAVA,java,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-624409.html

到了這里,關(guān)于【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【JavaSE】java刷題——基礎(chǔ)語法熟練應(yīng)用

    【JavaSE】java刷題——基礎(chǔ)語法熟練應(yīng)用

    通過本篇題目,可以讓初學(xué)Java的小伙伴們更加熟練Java的基礎(chǔ)語法~ 歡迎關(guān)注個人主頁:逸狼 創(chuàng)造不易,可以點點贊嗎~ 如有錯誤,歡迎指出~ ?題述:編寫程序數(shù)一下 1到 100 的所有整數(shù)中出現(xiàn)多少個數(shù)字9 分兩步 取個位上的9 ?有9 19 29……99 有10個 取十位上的9 ?有90 91 92 93…

    2024年04月17日
    瀏覽(24)
  • 【JavaSE】Java基礎(chǔ)語法(十二):ArrayList

    【JavaSE】Java基礎(chǔ)語法(十二):ArrayList

    集合和數(shù)組的區(qū)別 : 共同點:都是存儲數(shù)據(jù)的容器 不同點:數(shù)組的容量是固定的,集合的容量是可變的 ArrayList : 可調(diào)整大小的數(shù)組實現(xiàn) 是一種特殊的數(shù)據(jù)類型,泛型。 怎么用呢 ? 在出現(xiàn)E的地方我們使用引用數(shù)據(jù)類型替換即可 舉例:ArrayList, ArrayList 成員方法 : 案例需求

    2024年02月06日
    瀏覽(26)
  • 【JavaSE】Java基礎(chǔ)語法(二十五):異常

    【JavaSE】Java基礎(chǔ)語法(二十五):異常

    異常的概述 異常就是程序出現(xiàn)了不正常的情況 異常的體系結(jié)構(gòu) 編譯時異常 都是Exception類及其子類 必須顯示處理,否則程序就會發(fā)生錯誤,無法通過編譯 運行時異常 都是RuntimeException類及其子類 無需顯示處理,也可以和編譯時異常一樣處理 圖示 如果程序出現(xiàn)了問題,我們

    2024年02月06日
    瀏覽(39)
  • 【JavaSE】Java基礎(chǔ)語法(十六):抽象類

    【JavaSE】Java基礎(chǔ)語法(十六):抽象類

    當(dāng)我們在做子類共性功能抽取時,有些方法在父類中并沒有具體的體現(xiàn),這個時候就需要抽象類了! 在Java中,一個沒有方法體的方法應(yīng)該定義為抽象方法,而類中如果有抽象方法,該類必須定義為抽 象類! 抽象類和抽象方法必須使用 abstract 修飾 抽象類中不一定有抽

    2024年02月07日
    瀏覽(49)
  • 【JavaSE】Java基礎(chǔ)語法(二十一):內(nèi)部類

    【JavaSE】Java基礎(chǔ)語法(二十一):內(nèi)部類

    內(nèi)部類概念 在一個類中定義一個類。舉例:在一個類A的內(nèi)部定義一個類B,類B就被稱為內(nèi)部類 內(nèi)部類定義格式 格式舉例: 內(nèi)部類的訪問特點 內(nèi)部類可以直接訪問外部類的成員,包括私有 外部類要訪問內(nèi)部類的成員,必須創(chuàng)建對象 示例代碼: 成員內(nèi)部類的定義位置 在類中

    2024年02月07日
    瀏覽(32)
  • 【JavaSE】Java基礎(chǔ)語法(三十一):可變參數(shù)

    【JavaSE】Java基礎(chǔ)語法(三十一):可變參數(shù)

    可變參數(shù)介紹 可變參數(shù)又稱參數(shù)個數(shù)可變,用作方法的形參出現(xiàn),那么方法參數(shù)個數(shù)就是可變的了 方法的參數(shù)類型已經(jīng)確定,個數(shù)不確定,我們可以使用可變參數(shù) 可變參數(shù)定義格式 可變參數(shù)的注意事項 這里的變量其實是一個數(shù)組 如果一個方法有多個參數(shù),包含可變參數(shù),可

    2024年02月08日
    瀏覽(22)
  • 【JavaSE】java刷題--數(shù)組練習(xí)

    【JavaSE】java刷題--數(shù)組練習(xí)

    本篇講解了一些數(shù)組相關(guān)題目(主要以代碼的形式呈現(xiàn)),主要目的在于鞏固數(shù)組相關(guān)知識。 上一篇?數(shù)組?講解了一維數(shù)組和二維數(shù)組的基礎(chǔ)知識~ 歡迎關(guān)注個人主頁:逸狼 創(chuàng)造不易,可以點點贊嗎~ 如有錯誤,歡迎指出~ 思路 首先要判斷 空指針和空數(shù)組 的情況,利用 字符

    2024年04月10日
    瀏覽(22)
  • 【JavaSE】Java基礎(chǔ)語法(三十二):Stream流

    【JavaSE】Java基礎(chǔ)語法(三十二):Stream流

    案例需求 按照下面的要求完成集合的創(chuàng)建和遍歷 創(chuàng)建一個集合,存儲多個字符串元素 把集合中所有以\\\"張\\\"開頭的元素存儲到一個新的集合 把\\\"張\\\"開頭的集合中的長度為3的元素存儲到一個新的集合 遍歷上一步得到的集合 原始方式示例代碼 使用Stream流示例代碼 Stream流的好處

    2024年02月07日
    瀏覽(31)
  • 【JavaSE】Java基礎(chǔ)語法(三十四):實現(xiàn)多線程

    【JavaSE】Java基礎(chǔ)語法(三十四):實現(xiàn)多線程

    是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。 具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多個線程,提升性能。 并行:在同一時刻,有多個指令在多個CPU上同時執(zhí)行。 并發(fā):在同一時刻,有多個指令在單個CPU上交替執(zhí)行。 進程:是正在運行的程序

    2024年02月08日
    瀏覽(21)
  • 【JavaSE】Java基礎(chǔ)語法(三十三):File 一文詳解

    【JavaSE】Java基礎(chǔ)語法(三十三):File 一文詳解

    File類介紹 它是文件和目錄路徑名的抽象表示 文件和目錄是可以通過File封裝成對象的 對于File而言,其封裝的并不是一個真正存在的文件,僅僅是一個路徑名而已.它可以是存在的,也 可以是不存在的.將來是要通過具體的操作把這個路徑的內(nèi)容轉(zhuǎn)換為具體存在的 File類的構(gòu)造方法

    2024年02月06日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包