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

Java開發(fā)必備知識之?dāng)?shù)組詳解

 更新時間:2021年06月01日 10:40:31   作者:北夷煙雪江中雨  
數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同.本篇文章為大家整理了Java最全關(guān)于數(shù)組的知識點,并給出其對應(yīng)的代碼,需要的朋友可以參考下

一、ASCII碼

在這里插入圖片描述

二、為什么需要數(shù)組

案例: 160班 現(xiàn)在 77人   統(tǒng)計 全班的Java成績  用程序進行存儲  變量   統(tǒng)計  全班不及格的同學(xué)  
要 補考  補考過的同學(xué) 修改成績  
定義  77 個變量  
 int 帥  =  59;
 int  洋 = 100;
 int  cto   = 60;
 int  ceo = 58;

三、什么是數(shù)組

概念:數(shù)組就是內(nèi)存中一塊 連續(xù)的 內(nèi)存空間,用于存放 相同類型 的多個數(shù)據(jù)

四、定義數(shù)組

聲明一個數(shù)組:確定數(shù)組中存放的數(shù)據(jù)類型
	語法:
		數(shù)據(jù)類型[]  數(shù)組名;//建議
		數(shù)據(jù)類型  []數(shù)組名;
        數(shù)據(jù)類型  數(shù)組名[];//c語言的寫法  不建議 
    案例:
     //聲明一個數(shù)組
        int[] a ;
為數(shù)組開辟空間:確定了數(shù)組的容量大小
	語法:數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度];
	案例://為數(shù)組開辟空間
        a = new int[77];

數(shù)組的長度:自動獲取數(shù)組的長度  數(shù)組名.length
數(shù)組的下標:為每個數(shù)組的元素分配一個標號  0------數(shù)組名.length-1
數(shù)組的元素:數(shù)組中每個小空間叫做數(shù)組的一個元素相當(dāng)于一個變量

定義數(shù)組的其他方式
	第一種:聲明 開辟空間(隱式)
		1)先聲明 后開辟空間
		語法: 
		數(shù)據(jù)類型[]  數(shù)組名;//聲明
		數(shù)據(jù)名 = new 數(shù)據(jù)類型[數(shù)組長度];//開辟空間
		2)聲明的同時并開辟空間
		語法:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];
	第二種:聲明 賦值(顯式初始化)
		1)先聲明  后賦值
		語法:
		數(shù)據(jù)類型[] 數(shù)組名 ;//聲明
		數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,元素3,。。。};//賦值
		2)聲明的同時并賦值
		語法:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,元素3,。。。};
			簡寫形式:數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,元素3,。。。};
			注意:
			1.簡寫形式不能分為兩行 數(shù)組的聲明和賦值必須在同一行
			2.在定義數(shù)組的過程中 不能既賦值同時又定義長度

五、使用數(shù)組

存數(shù)據(jù):為每個元素賦值
取數(shù)據(jù):
	語法:數(shù)組名[數(shù)組下標] = 值;
	案例:
	public class Demo{
    public static void main(String[] args) {
        //聲明一個數(shù)組
        int[] a ;
        //為數(shù)組開辟空間
        a = new int[4];
        //存數(shù)據(jù)
        a[0] = 2;
        a[1] = 4;
        a[2] = 6;
        a[3] = 8;

        //訪問數(shù)據(jù)
        System.out.println(a[0]);
        System.out.println(a[1]);
        System.out.println(a[2]);
        System.out.println(a[3]);
        //獲取數(shù)組的長度
        System.out.println("數(shù)組的長度:"+a.length); 
    }
    
}

六、數(shù)組的默認值

當(dāng)定義一個數(shù)組沒有為數(shù)組賦值數(shù)組的每一個元素都有一個默認值 默認值的類型和數(shù)組的類型是相關(guān)的

簡單數(shù)據(jù)類型
byte--------------0
short-------------0
int  -------------0
long--------------0

float ------------0.0
double------------0.0

char-------------空字符  '\u0000'

boolean----------false

引用數(shù)據(jù)類型(對象類型)------null

案例:
public class Demo{
    public static void main(String[] args) {
        //定義一個數(shù)組
        String[] a = new String[5];

        System.out.println(a[0]);
        System.out.println(a[1]);
        System.out.println(a[2]);
        System.out.println(a[3]);
        System.out.println(a[4]);
        
    }
    
}

七、數(shù)組的遍歷

遍歷:訪問數(shù)組中的每個元素并打印

案例:
public class Demo{
    public static void main(String[] args) {
        int[] a = {3,5,6,7,8,3,23,56,78,52,34};

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

八、數(shù)組在內(nèi)存中的分析

int[] a = new int[4];
a的引用指向  數(shù)組在堆內(nèi)存中的實體  (見圖示)

元素的地址值 = 首地址+數(shù)據(jù)類型字節(jié)數(shù)*下標

案例:
public class Demo{
    public static void main(String[] args) {
        int[] a = new int[3];
        a[0] = 2;
        a[1] = 3;
        a[2] = 5;

        int[] b = new int[4];

        b = a;
        System.out.println("b數(shù)組的長度:"+b.length);
        System.out.println("a數(shù)組的長度:"+a.length);
        for(int i =0;i<b.length;i++){
            System.out.print(b[i]+" ");
                       
        }
    }
    
}

九、數(shù)組的擴容

思想:
1.定義一個新的數(shù)組 容量要比之前的數(shù)組大
2.將原數(shù)組中的元素 復(fù)制到新數(shù)組中
3.將原數(shù)組的引用指向新數(shù)組

注意:如果超出了數(shù)組的下標 那么會報異常
java.lang.ArrayIndexOutOfBoundsException 數(shù)組下標越界異常
方法:
=========================================================================================
第一種:自己寫
代碼:
public class Demo{
    public static void main(String[] args) {
        int[] a = {2,4,6,3,7,5,23};//7
        System.out.println("擴容之前的長度:"+a.length);
        
        //1,定義一個新數(shù)組
        int[] b = new int[a.length*2];
        //2,將原數(shù)組元素復(fù)制到新數(shù)組中
        for(int i = 0;i<a.length;i++){
            b[i] = a[i];          
        }
        
        //3 將a的引用指向新數(shù)組
        a = b;

        //遍歷a數(shù)組
        System.out.println("擴容之后的長度:"+a.length);
        
        for(int i = 0;i<a.length;i++){
           System.out.print(a[i]+" ");     
        }
    }
    
}
=================================================================
第二種:利用 System.arraycopy(原數(shù)組名,原數(shù)組的起始下標,新數(shù)組名,新數(shù)組的起始下標,要復(fù)制的長度)
代碼:
public class Demo{
    public static void main(String[] args) {
        int[] a = {2,4,6,3,7,5,23};//7
        System.out.println("擴容之前的長度:"+a.length);
        
        //1,定義一個新數(shù)組
        int[] b = new int[a.length*2];
        //2,將原數(shù)組元素復(fù)制到新數(shù)組中
        System.arraycopy(a,0,b,0,a.length);
        /*for(int i = 0;i<a.length;i++){
            b[i] = a[i];          
        }
        */
        //3 將a的引用指向新數(shù)組
        a = b;

        //遍歷a數(shù)組
        System.out.println("擴容之后的長度:"+a.length);
        
        for(int i = 0;i<a.length;i++){
           System.out.print(a[i]+" ");     
        }
    }
    
}
==================================================================
第三種:利用Arrays工具類 操作
Arrays是java.util包中的一個工具類
Arrays.copyOf(原數(shù)組,擴容之后的長度) 此函數(shù)可以返回一個新的擴容之后的數(shù)組數(shù)組長度由函數(shù)的第二個參數(shù)決定
代碼:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {2,4,6,3,7,5,23};//7
        System.out.println("擴容之前的長度:"+a.length);

        a = Arrays.copyOf(a,a.length*2);

        System.out.println("擴容之后的長度:"+a.length);
        //遍歷
        for(int i = 0;i<a.length;i++){
           System.out.print(a[i]+" ");     
        }
    }
    
}

練習(xí):隨機點名系統(tǒng)
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        String[] s = {"",""};
        //系統(tǒng)隨機產(chǎn)生一個下標
        int index = (int)(Math.random()*s.length);
        System.out.println(s[index]);
        
       
    }
    
}

案例:隨機賦值
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = new int[10];

        //循環(huán)賦值
        for(int i = 0;i<a.length;i++){
            a[i] = (int)(Math.random()*100);          
        }
        //遍歷
        for(int i = 0;i<a.length;i++){
            System.out.print(a[i]+"  ");
                      
        } 
    }    
}

十、數(shù)組用在函數(shù)的參數(shù)上

案例:寫一個函數(shù) 函數(shù)的功能是遍歷數(shù)組  形參類型 數(shù)組類型  參數(shù)幾個 1  返回值 void    printArray
代碼:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {3,4,56,7,8,8,9,9,3,5,66,77,88};
        printArray(a);
        System.out.println();
        
        int[] b = new int[10];
        printArray(b);
    }
    //
    public static void printArray(int[] a) {

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

數(shù)組用在函數(shù)的參數(shù)和返回值上

案例:寫一個函數(shù) 實現(xiàn)數(shù)組的擴容   
代碼:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {3,4,56,7,8,8,9,9,3,5,66,77,88};
        //調(diào)用 擴容
        a = myCopyOf(a);
        printArray(a);
       
        
    }
    //
    public static void printArray(int[] a) {

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

    //擴容數(shù)組
    public  static int[] myCopyOf(int[] a) {
        //定義一個新數(shù)組
        int[] b = new int[a.length*2];
        //將原數(shù)組的元素復(fù)制到新數(shù)組
        for(int i = 0;i<a.length;i++){
            b[i] = a[i];           
        }
        return b;
    }   
}

案例:定義一個函數(shù)  函數(shù)的功能是 計算多個數(shù)的和  數(shù)不定 
代碼:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {3,4,5};
        int sum = add(a);
        System.out.println(sum);
        
        
    }
 
    //定義一個函數(shù) 實現(xiàn) 計算幾個數(shù)的和
    public static int add(int[] a) {
        int sum = 0;
        for(int i = 0;i<a.length;i++){
            sum+=a[i];            
        }
        return sum;
    }
}

十一、函數(shù)可變長參數(shù)

語法: 數(shù)據(jù)類型... 變量名 
就相當(dāng)于 數(shù)據(jù)類型[]  變量名;

public static 返回值類型  函數(shù)名(數(shù)據(jù)類型... 變量名){

}
注意:可變長參數(shù)函數(shù)中的形參列表只能有一個可變長參數(shù),如果有其他的形參,那么可變長參數(shù)必須放在參數(shù)列表的最后
案例:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        /*int sum1 = add(3,4,5);
        int sum2 = add(4,6,9);
        int sum3 = add(3,6,8,9,4,3);*/
        int sum = add(3,4,6);
        System.out.println(sum);
        
        
    }
    //定義一個可變長參數(shù)函數(shù)
    public static int add(int b,int c,int...a) {
        int sum = 0;
        for(int i = 0;i<a.length;i++){
            sum+=a[i];           
        }
        return sum;
    }
    
    
}


案例:傳數(shù)組也可以  
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {1,2,3};
        int sum = add(a);
        
        System.out.println(sum);
        
    }
    //定義一個可變長參數(shù)函數(shù)
    public static int add(int...a) {
        int sum = 0;
        for(int i = 0;i<a.length;i++){
            sum+=a[i];           
        }
        return sum;
    }
    
    
}

案例:這樣是不行的
import java.util.*;
public class Demo{
    public static void main(String[] args) {
       int sum = add(2,4,5);
        
        System.out.println(sum);
        
    }
    //定義一個可變長參數(shù)函數(shù)
    public static int add(int[] a) {
        int sum = 0;
        for(int i = 0;i<a.length;i++){
            sum+=a[i];           
        }
        return sum;
    }
}

十二、數(shù)組的排序

 1.4. 6.8.3 ----  1 3 4 6 8
 
 套路:算法

十三、冒泡排序

規(guī)則:相鄰的兩個元素進行比較 如果前者大于后者 則兩者交換位置

案例: 3,1,4,2  ------->1 2 3 4


***
**
*

雙重for循環(huán)


代碼:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {3,5,87,34,67,2,95,36,67,78};              
        //int[] a = {3,1,4,2};
        //冒泡排序
        for(int i = 1;i<=a.length-1;i++){
            for(int j = 0;j<a.length-i;j++){
                if (a[j]>a[j+1]) {
                    //交換位置
                    int t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                } 
                         
            }           
        }
        //遍歷
        for(int i = 0;i<a.length;i++){
            System.out.print(a[i]+" ");
                      
        }
                
    } 
 
}

在這里插入圖片描述

選擇排序

規(guī)則:在數(shù)組中選擇一個數(shù) 和其他的數(shù)進行比較 如果這個數(shù)大于其他的數(shù) 那么兩者交換位置

代碼:
import java.util.*;
public class Demo{
    public static void main(String[] args) {
        int[] a = {3,5,87,34,67,2,95,36,67,78};              
        //int[] a = {3,1,4,2};
        //冒泡排序
        /*for(int i = 1;i<=a.length-1;i++){
            for(int j = 0;j<a.length-i;j++){
                if (a[j]<a[j+1]) {
                    //交換位置
                    int t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                } 
                         
            }           
        }*/


        //選擇排序
        for(int i = 0;i<=a.length-2;i++){
            for(int j = i+1;j<a.length;j++){
                if (a[i]>a[j]) {
                    int t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                } 
                          
            }          
        }
        //遍歷
        for(int i = 0;i<a.length;i++){
            System.out.print(a[i]+" ");         
        }        
    } 
}

在這里插入圖片描述

快速排序

 jdk提供的屬于java.util中的Arrays工具類的函數(shù)
 java.util.Arrays.sort(a);

代碼:

public class Demo{
    public static void main(String[] args) {
        int[] a = {3,5,87,34,67,2,95,36,67,78};              
        //int[] a = {3,1,4,2};
        //快速排序
        java.util.Arrays.sort(a);
        //遍歷
        for(int i = 0;i<a.length;i++){
            System.out.print(a[i]+" ");         
        }        
    } 
 
}

十四、二維數(shù)組

概念:是一維數(shù)組的一維數(shù)組
數(shù)組:
	8中基本數(shù)據(jù)類型
	引用數(shù)據(jù)類型  數(shù)組是引用數(shù)據(jù)類型 
數(shù)據(jù)類型[] -----數(shù)組類型 

二維數(shù)組的定義

數(shù)組的聲明:
語法:
數(shù)據(jù)類型[][] 數(shù)組名;

為數(shù)組分配空間
語法:
數(shù)組名 = new 數(shù)據(jù)類型[高維數(shù)組長度][低維數(shù)組長度]
案例:

public class Demo{
    public static void main(String[] args) {
        int[][] a = new int[4][3];
        /*int[] b = new int[4];
        b[0] = new int[3];
        b[1] = new int[3];
        b[2] = new int[3];
        b[3] = new int[3];*/
        a[0][0] = 1;
        a[0][1] = 2;
        a[1][2] = 5;
		
        for(int i = 0;i<a.length;i++){
            for(int j = 0;j<a[i].length;j++){
                System.out.print(a[i][j]+" ");            
            }  
            System.out.println();
                    
        }
        
    } 
 
}

二維數(shù)組的遍歷

方法:先遍歷高維 再遍歷低維

代碼:
 for(int i = 0;i<a.length;i++){
            for(int j = 0;j<a[i].length;j++){
                System.out.print(a[i][j]+" ");            
            }  
            System.out.println();
                    
 }

二維數(shù)組的定義的其他方式

第一種:聲明 分配空間
	1)先聲明 后分配空間
	int[][] a;
	a = new int[4][5]  //4行5列
	2)聲明并分配空間
	int[][] a = new int[4][5];
第二種:聲明 賦值
	1)先聲明 后賦值
	int[][] a ;
	a = new int[][]{{2,3,4},{4,5,6},{4,6,8},{3,5,7}}
	2)先聲明并賦值
	int[][] a =new int[][]{{2,3,4},{4,5,6},{4,6,8},{3,5,7}}
	簡寫:int[][] a = {{2,3,4},{4,5,6},{4,6,8},{3,5,7}};
	注意:簡寫形式不能分為兩行 聲明和賦值必須在同一行
案例:

public class Demo{
    public static void main(String[] args) {
       //聲明并賦值
       int[][] a = new int[][]{{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

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

不規(guī)則的二維數(shù)組

數(shù)組中每個元素數(shù)組的長度是不同的
int[][] a = {{1,2,3,3},{4,5},{7,8,9,8,56},{10,11,12}};
遍歷:

public class Demo{
    public static void main(String[] args) {
       //聲明并賦值
       int[][] a = {{1,2,3,3},{4,5},{7,8,9,8,56},{10,11,12}};

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

注意的問題:
1.當(dāng)定義一個二維數(shù)組 可以先為高維數(shù)組進行分配空間,再一一為低維數(shù)組進行初始化
案例:

public class Demo{
    public static void main(String[] args) {
       //聲明并賦值
        int[][] a;
        a = new int[3][];
        
        a[0] = new int[3];
        a[1] = new int[4];
        a[2] = new int[5];

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

2.當(dāng)定義一個二維數(shù)組,必須先為高維分配空間,因為低維數(shù)組是依賴于高維數(shù)組創(chuàng)建的
案例:

public class Demo{
    public static void main(String[] args) {
       //聲明并賦值
        int[][] a;
        a = new int[][4];//錯誤的
        
        for(int i = 0;i<a.length;i++){
            for(int j = 0;j<a[i].length;j++){
                System.out.print(a[i][j]+" ");            
            }  
            System.out.println();
                    
        }        
    } 
 
}

十五、引用之間的傳遞

在這里插入圖片描述

到此這篇關(guān)于Java開發(fā)必備知識之?dāng)?shù)組詳解的文章就介紹到這了,更多相關(guān)Java數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決spring boot環(huán)境切換失效的問題

    解決spring boot環(huán)境切換失效的問題

    這篇文章主要介紹了解決spring boot環(huán)境切換失效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot使用mybatis一對多的關(guān)聯(lián)查詢問題記錄

    springboot使用mybatis一對多的關(guān)聯(lián)查詢問題記錄

    這篇文章主要介紹了springboot使用mybatis一對多的關(guān)聯(lián)查詢問題記錄,剛好最近有個需求需要做到關(guān)聯(lián)的查詢,時間也算充足,所以用sql來寫,于是踩了很久坑,終于跳出來了,小小記錄一下
    2022-01-01
  • Spring BeanFactory和FactoryBean有哪些區(qū)別

    Spring BeanFactory和FactoryBean有哪些區(qū)別

    這篇文章主要介紹了Spring BeanFactory 與 FactoryBean 的區(qū)別詳情,BeanFactory 和 FactoryBean 的區(qū)別卻是一個很重要的知識點,在本文中將結(jié)合源碼進行分析講解,需要的小伙伴可以參考一下
    2023-02-02
  • 淺談Maven 項目中依賴的搜索順序

    淺談Maven 項目中依賴的搜索順序

    這篇文章主要介紹了淺談Maven 項目中依賴的搜索順序,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 高斯混合模型與EM算法圖文詳解

    高斯混合模型與EM算法圖文詳解

    高斯模型就是用高斯概率密度函數(shù)(正態(tài)分布曲線)精確地量化事物,將一個事物分解為若干的基于高斯概率密度函數(shù)(正態(tài)分布曲線)形成的模型
    2021-08-08
  • Java?@Validated遇到的大坑與處理

    Java?@Validated遇到的大坑與處理

    這篇文章主要介紹了Java?@Validated遇到的大坑與處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java正則表達式簡單使用和網(wǎng)頁爬蟲的制作代碼

    java正則表達式簡單使用和網(wǎng)頁爬蟲的制作代碼

    java正則表達式簡單使用和網(wǎng)頁爬蟲的制作代碼,需要的朋友可以參考一下
    2013-05-05
  • Java中快速把map轉(zhuǎn)成json格式的方法

    Java中快速把map轉(zhuǎn)成json格式的方法

    這篇文章主要介紹了Java中快速把map轉(zhuǎn)成json格式的方法,本文使用json-lib.jar中的JSONSerializer.toJSON方法實現(xiàn)快速把map轉(zhuǎn)換成json,需要的朋友可以參考下
    2015-07-07
  • java多線程詳細總結(jié)

    java多線程詳細總結(jié)

    以下小編就對java中的多線程進行了詳細的總結(jié)分析,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Java中i++的一些問題總結(jié)

    Java中i++的一些問題總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java中i++的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論