久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JavaSE| 數(shù)組

 印度阿三17 2018-11-22

數(shù)組(array)

數(shù)組就是多個相同類型數(shù)據(jù)的組合,,實現(xiàn)對這些數(shù)據(jù)的統(tǒng)一管理,。 數(shù)組中的元素可以是任何數(shù)據(jù)類型,,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,。數(shù)組屬引用類型,數(shù)組型數(shù)據(jù)是對象(object),,
每個元素相當于該對象的成員變量。 相同數(shù)據(jù)類型的一組元素,,數(shù)據(jù),,按照一定的順序排列的集合。 把有限個相同類型的變量,,使用統(tǒng)一的名稱進行命名,,以便統(tǒng)一管理它們,這個統(tǒng)一的名稱我們稱為“數(shù)組名”,, 每一個元素通過編號來區(qū)別,,這個編號我們稱為“索引index或下標”。 組成數(shù)組的每一個數(shù)據(jù)我們稱為“元素element”,, 數(shù)組中元素的總個數(shù),,我們稱為“數(shù)組的長度length”。 一個int類型的變量,,存儲一個整數(shù)值 一,、數(shù)組的聲明 語法格式: 元素的數(shù)據(jù)類型[] 數(shù)組名; 數(shù)組名 = new 元素的數(shù)據(jù)類型[]{元素值1,元素值2...}; 二、數(shù)組的初始化      1,、目標: (1)確定數(shù)組的長度  ?。?)確定數(shù)組的元素值      2、動態(tài)初始化        語法格式:數(shù)組名 = new 元素的數(shù)據(jù)類型[長度]; 先聲明,,再動態(tài)初始化如 String[] name;             name = new String[5]; 聲明 動態(tài)初始化如   int[] score = new int[5];        通過動態(tài)初始化的數(shù)組,,元素有默認值,,默認值也分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。        基本數(shù)據(jù)類型:byte,short,int,long:0,; float,double:0.0,; char:\u0000,即字符編碼為0的字符,; boolean:false        引用數(shù)據(jù)類型:默認值統(tǒng)統(tǒng)都是null,;例如String等類、接口,、數(shù)組等類型   3,、靜態(tài)初始化:     語法格式:元素的數(shù)據(jù)類型[] 數(shù)組名 = {元素值1,元素值2...};          聲明 靜態(tài)初始化如:   int[] day = {30,31,33};         先聲明,后再靜態(tài)初始化如:int[] day;                       day = new int[]{ }    3,、手動賦值: 數(shù)組名[下標] = 值; 說明:數(shù)組的下標的范圍[0,數(shù)組的長度-1] ,;如果下標越界,會報ArrayIndexOutOfBoundsException 數(shù)組的元素: 數(shù)組名[下標] 數(shù)組的長度: 數(shù)組名.length 三,、數(shù)組的遍歷 for(int i=0; i<數(shù)組名.length; i ){ //數(shù)組名[i]代表一個元素
}

for(int num : arr){
  System.out.print(num);
}

?

?

數(shù)組的分類:
    一維數(shù)組,、二維數(shù)組、三維數(shù)組...多維數(shù)組:從二維開始都算多維數(shù)組,,一般到二維就差不多了,。
二維數(shù)組又稱為矩陣。

先把一行看成一個整體的話,,二維數(shù)組就是一個“特殊一維數(shù)組”
        二維數(shù)組的行數(shù),,就是“特殊一維數(shù)組”的長度,二維數(shù)組名.length,;
        一行同時又是一個一維數(shù)組,,一行的列數(shù),行.length,;
        行:就是“特殊一維數(shù)組”的一個元素,,二維數(shù)組名[下標]
二維數(shù)組的相關表示方式:
    行:二維數(shù)組名[行下標]        行下標的范圍[0, 總行數(shù)-1]
    元素:二維數(shù)組名[行下標][列下標]  列下標的范圍[0, 該行的總元素的個數(shù)-1]
    行數(shù):二維數(shù)組名.length
    每一行的列數(shù):二維數(shù)組名[行下標].length

二維數(shù)組如何聲明?
    元素的數(shù)據(jù)類型[][] 二維數(shù)組名;

例如:要存儲每一組的學員的成績,,構成全班的成績數(shù)組,。    

二維數(shù)組的初始化?
1,、靜態(tài)初始化    
    二維數(shù)組名 = new 元素的數(shù)據(jù)類型[][]{{第一行的元素列表},{第二行的元素列表}....};
    
    聲明   靜態(tài)初始化:元素的數(shù)據(jù)類型[][] 二維數(shù)組名 = {{第一行的元素列表},{第二行的元素列表}....};
        int[][] scores2; //1. 先聲明
        scores2 = new int[][]{{1,2,3},{3,4,5},{6}}; //2.靜態(tài)初始化

     int[][] scores2 = {{1,2,3}, {3,4,5}, {6}}; //聲明 靜態(tài)初始化,。
2、動態(tài)初始化
  一維數(shù)組的動態(tài)初始化:  一維數(shù)組名 = new 元素的數(shù)據(jù)類型[長度];

  二維數(shù)組的動態(tài)初始化:
      1,、每一行的列數(shù)是相同的,,規(guī)則的矩陣
        二維數(shù)組名 = new 元素的數(shù)據(jù)類型[行數(shù)][列數(shù)];
      2、每一行的列數(shù)是不相同的,,不規(guī)則的矩陣
       ?。?)第一步先確定總行數(shù)
            二維數(shù)組名 = new 元素的數(shù)據(jù)類型[行數(shù)][];
       ?。?)依次確定每一行的列數(shù)
            行 = new  元素的數(shù)據(jù)類型[列數(shù)];

    for(int i = 0; i < arr.length; i  ){ //確定每行的列數(shù);  --->> 為元素賦值  --->> 遍歷顯示   --->>換行
        arr[i] = new int[i   1];
      }
        String[][] names; //1.二維數(shù)組的聲明
        //names = new String[6][5];//動態(tài)初始化的方式一
        names = new String[6][0]; //動態(tài)初始化的方式二,先確定行數(shù),;再確定列數(shù),。
        names[0] = new String[5];
        names[1] = new String[3];
        names[2] = new String[7];
        names[3] = new String[9];
        names[4] = new String[2];
        names[5] = new String[4];
二維數(shù)組如何為元素賦值
    二維數(shù)組名 [行下標][列下標] = 值;
二維數(shù)組的遍歷
for(int i=0; i<行數(shù); i  ){
    for(int j=0; j<每一行的列數(shù); j  ){
        元素:二維數(shù)組名[行下標][列下標],,即二維數(shù)組名[i][j]
    }
} 

?

數(shù)組的遍歷/賦值

最高分和最低分

數(shù)組的反轉

class ShuZu{
    public static void main(String[] args){
        
        java.util.Scanner input = new java.util.Scanner(System.in);
        //輸入小組人數(shù)
        System.out.print("請輸入小組人數(shù):");
        int count = input.nextInt();
        
        //聲明和初始化name和score數(shù)組
        String[] name; //先聲明
        name = new String [count]; //動態(tài)初始化
        
        int[] score = new int[count]; //聲明 動態(tài)初始化
        
        
        //遍歷數(shù)組賦值
        for (int i = 0; i < name.length; i  ){
            System.out.print("第"   (i 1)   "個同學的名字:");
            name[i] = input.next();
            System.out.print("第"   (i 1)   "個同學的成績:");
            score[i] = input.nextInt();
        }
        
        //遍歷數(shù)組
        System.out.println("學生姓名和成績?nèi)缦?");
        for (int i = 0;i < name.length;i   ){
            System.out.print(name[i]   ":");
            System.out.print(score[i]   "分"   "\n");
        }
        
        //對數(shù)組score進行遍歷找出最高分和最低分
        
        int max = score[0];
        int min = score[0];
        int indexMax = 0;//
        int indexMin = 0;
        int sum = 0;
        for(int i = 0; i < score.length; i   ){ //也可以i < count;
            sum  = score[i];
            if(max < score[i]){
                max = score[i];
                indexMax = i;
            }if(min > score[i] ){
                min = score[i];
                indexMin = i;
            }
            
        }System.out.println("第"  (indexMax 1)   "個同學"   name[indexMax]    "的成績是最高的為:"   max);
        System.out.println("第"  (indexMin 1)   "個同學"   name[indexMin]    "的成績是最高的為:"   min);
        System.out.println("總分為:"   sum   "平均分是:"   sum/count);
        
        //數(shù)組的反轉(首尾對應位置交換,借助第三個變量)
        for(int i = 0;i <= score.length/2; i  ){
            int temp = score[i]; 
            score[i] = score[score.length-1-i]; //[1,2,3,4,5,6] 1(0)和6(5),;2(1)和5(4)... 
            score[score.length-1-i] = temp;
        }
        for(int i = 0; i< score.length;i  ){
            System.out.print(score[i]   "\t");
            
        }
        //數(shù)組的反轉,方法二:借助一個空(新)數(shù)組
        int[] temp = new int[count];
        for(int i = 0;i < score.length;i  ){
            temp[i]=score[score.length-1-i];
        }
        score = temp; //廢棄舊數(shù)組,指向新數(shù)組
        for(int i = 0;i < score.length;i   ){
            System.out.print(score[i]   "\t");
        }

    }
}

?

?由基本數(shù)據(jù)類型創(chuàng)建的數(shù)組它的默認值:

public class TestArray0 {
    public static void main(String[] args){
        
        //對于基于基本數(shù)據(jù)類型的變量創(chuàng)建的數(shù)組:byte short int long float double char boolean
        //1.對于byte short int long而已:創(chuàng)建數(shù)組以后,,默認值為0
        int[] scores = new int[4];
        scores[0] = 89;
        scores[3] = 90;
        for(int i = 0;i < scores.length;i  ){
            System.out.println(scores[i]);
        }
        //2.對于float  double而言,;默認值是0.0
        float[] f = new float[3];
        f[0] = 1.2F;
        for(int i = 0; i < f.length;i  ){
            System.out.println(f[i]);
        }
        System.out.println();
        
        //3.對于char而言,默認是空格
        char[] c = new char[3];
        for(int i = 0; i < c.length;i  ){
            System.out.println(c[i]);
        }
        System.out.println();
        
        //4.對于boolean而言,,默認是false
        boolean[] b = new boolean[3];
        for(int i = 0; i < b.length;i  ){
            System.out.println(b[i]);
        }
        System.out.println();        
        
        //5.對于引用類型的變量構成的數(shù)組而言:默認初始化值為null,。以String為例
        String[] strs = new String[4];
        strs[0] = "AA";
        strs[1] = "BB";
        //strs[2] = "CC"; 默認為null
        strs[3] = "DD";
        //遍歷數(shù)組的元素
        for (int i = 0;i < strs.length;i  ){
            System.out.println(strs[i]);
        }
        
        
        //自定義的類
        System.out.println();
        Person[] pers = new Person[3];
        for(int i = 0; i < pers.length;i  ){
            System.out.println(pers[i]);
        }
    }
}
class Person{
    
}

?

?

數(shù)組在內(nèi)存中的結構

?

?整個內(nèi)存里邊的基本結構就分這4部分:

?new出來數(shù)組、對象,;

方法區(qū):類名,、包名、方法的定義等,;常量池,、字符串常量池等,想用哪個從池子里邊拿

靜態(tài)區(qū):靜態(tài)的變量,,用static修飾的變量等,。

以數(shù)組為例,看它如何使用內(nèi)存結構的:

java虛擬機進行解釋運行對它進行初始化,,棧先進后出,scores變量先存放在棧里邊,,每個內(nèi)存里邊都對應一個地址,;new出來的放在堆里邊。通過地址進行對應

?

?

?

?

public class TestArray {
    public static void main(String[] args){

        //1.如何定義一個數(shù)組
        //1.1數(shù)組的聲明
        String[] names;
        int scores[];
        //1.2初始化
        //第一種:靜態(tài)初始化:初始化數(shù)組與給數(shù)組賦值同時進行,。
        names = new String[]{"kris","alex","egon"};
        
        //第二種:動態(tài)初始化:初始化數(shù)組與給數(shù)組元素賦值分開進行,。
        scores = new int[4];
        //2.如何調(diào)用相應的數(shù)組元素:通過數(shù)組元素的下角標的方式來調(diào)用。
        //下角標從0開始,,到n-1結束,,其中n表示數(shù)組的長度。
        scores[0] = 87;
        scores[1] = 88;
        scores[3] = 90;
        //3.數(shù)組的長度:通過數(shù)組的length屬性,。
        System.out.println(names.length);//3
        System.out.println(scores.length); //4
        //4.如何遍歷數(shù)組元素
//        System.out.println(names[0]);
//        System.out.println(names[1]);
//        System.out.println(names[2]);
        for (int i = 0; i < names.length; i  ){
            System.out.println(names[i]);
        }
        
    }
}

?

//數(shù)組一旦初始化,,其長度是不可變的
public class TestAarry1 {
    public static void main(String[] args){
        int[] i = new int[]{12,13,14};
        int[] j = new int[10];
        for(int k = 0;k < i.length;k  ){
            j[k] = i[k];
        }
        j[3] = 15;
        j[4] = 16;
        
        for(int k = 0; k < j.length;k  ){
            System.out.println(j[k]);
        }
    }

}

?

?

?

package com.du.bai.www;

public class TestArry2 {
    public static void main(String[] args){
        int[] scores1 = new int[10];
        int[][] scores2;
        String[][] names;
        //1.二維數(shù)組的初始化
        scores2 = new int[][]{{1,2,3},{3,4,5},{6}}; //靜態(tài)初始化
        
        names = new String[6][5];//動態(tài)初始化的方式一
        names = new String[6][0]; //動態(tài)初始化的方式二
        names[0] = new String[5];
        names[1] = new String[3];
        names[2] = new String[7];
        names[3] = new String[9];
        names[4] = new String[2];
        names[5] = new String[4];
        
        //錯誤的初始化方式
        //names = new String[][];
        //names = new String[][5];
        
        //2.如何來引用具體的某一個元素
        int[][] i = new int[3][2]; //int[] i[] = new int[3][2];
        i[1][0] = 90;
        i[2][1] = 89;
        
        //3.數(shù)組的長度
        //二維數(shù)組的長度;length屬性
        System.out.println(i.length); //3
        //二維數(shù)組中元素的長度
        System.out.println(i[0].length); //2
        System.out.println(names.length); //6
        System.out.println(names[4].length); //8
        System.out.println(); 
        
        //4.如何遍歷二維數(shù)組
        for(int m = 0; m < scores2.length;m  ){ //控制行數(shù)
            for(int n = 0;n < scores2[m].length;n  ){
                System.out.print(scores2[m][n]   "  ");
            }
            System.out.println();
        }
        
    }

}

?

?

?

異常:

public class TestException {
    public static void main(String[] args){
        //1.數(shù)組下標越界異常:java.lang.ArrayIndexOutOfBoundsException
        int[] i = new int[10];
        //i[0] = 90;
        //i[10] = 99;
//        for (int m = 0;m <= i.length;m  ){
//            System.out.println(i[m]);
//        }
        
        //2.空指針的異常:NullPointerException
        //第一種:
//        boolean[] b = new boolean[3];
//        b = null;
//        System.out.println(b[0]);
        
        //第二種:
//        String[] str = new String[4];
//        str[3] = new String("AA"); //str[3] = "AA";
//        System.out.println(str[3].toString());
        //第三種:
        int[][] j = new int[3][];
        j[2][0] = 12;
    }
}


?

?

public class TestGetSum {
    public static void main(String[] args){
        int[][] m = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
        int sum = 0;
        for (int i = 0;i < m.length;i  ){
            for(int j = 0;j < m[i].length;j  ){
                System.out.print(m[i][j]   "\t");
                sum  = m[i][j];
            }
            System.out.println();
        }
        System.out.println("總和為:"   sum);
    }

}

?

?

?

public class TestYangHui {
    public static void main(String[] args){
        int[][] yangHui = new int[10][];
        //1.初始化二維數(shù)組
        for(int i = 0;i < yangHui.length;i  ){
            yangHui[i] = new int[i   1];
        }
        //2.顯示的為二維數(shù)組的每個元素賦值
        for(int i = 0;i < yangHui.length;i  ){
            for(int j = 0;j < yangHui[i].length;j  ){
                yangHui[i][0] = yangHui[i][i] = 1;
                
                if (i > 1 && j > 0 && j < i){
                    yangHui[i][j] = yangHui[i - 1][j]   yangHui[i - 1][j - 1];
                    
                }
            }
            
        }
        
        //遍歷二維數(shù)組
        for(int i = 0;i < yangHui.length;i  ){
            for(int j = 0; j < yangHui[i].length;j  ){
                System.out.print(yangHui[i][j]   "\t");
            }
            System.out.println();
        }
    }

}

?

class Test{
    public static void main(String[] args){
        int[] array1, array2;
        array1 = new int[]{2,3,5,7,11,13,17,19};
        //遍歷array1
        for(int i = 0; i < array1.length;i  ){
            
            System.out.println(array1[i]   "\t");
        }
        System.out.println();
        array2 = array1;  //這樣子賦值,修改array2的內(nèi)容,,array1也會改變,。
        //修改array2
        for (int i = 0;i < array2.length;i  ){
            if(i % 2 == 0){
                array2[i] = i;
            }
        }
        //遍歷array1
        for(int i = 0;i < array1.length;i  ){
            System.out.print(array1[i]   "\t");
        }
        
    }
}

?

?API,,數(shù)組工具類

API:應用程序編程接口,俗稱“幫助文檔”

java.util.Arrays:數(shù)組工具類
    此類包含用來操作數(shù)組(比如排序和搜索)的各種方法,。

(1)int binarySearch(int[] a, int key) 
        a - 要搜索的數(shù)組
        key - 要搜索的值
        結果:如果它(key)包含在數(shù)組(a)中,,則返回搜索鍵的索引;否則返回 (-(插入點) - 1),。
            插入點:被定義為將鍵(key)插入數(shù)組(a)的那一點
    二分查找的前提:數(shù)組必須是有序的
(2)void sort(int[] a) :對指定的 int 型數(shù)組按數(shù)字升序進行排序,。
(3)int[] copyOf(int[] original, int newLength) 
    復制指定的數(shù)組,截取或用 0 填充(如有必要),,以使副本具有指定的長度,。
    original - 要復制的數(shù)組,源數(shù)組
    newLength - 要返回的副本的長度 
    結果:原數(shù)組的副本,,截取或用 0 填充以獲得指定的長度 
(4)int[] copyOfRange(int[] original, int from, int to)      
    original - 將要從其復制一個范圍的數(shù)組,,源數(shù)組
    from - 要復制的范圍的初始索引(包括)
    to - 要復制的范圍的最后索引(不包括)。(此索引可以位于數(shù)組范圍之外),。 
    結果:original數(shù)組的[from,to)
(5) void fill(int[] a, int val) 將指定的 int 值分配給指定 int 型數(shù)組的每個元素,。 
    a - 要填充的數(shù)組
    val - 要存儲在數(shù)組所有元素中的值
(6)String toString(int[] a) 
返回指定數(shù)組內(nèi)容的字符串表示形式。字符串表示形式由數(shù)組的元素列表組成,,括在方括號("[]")中,。
相鄰元素用字符 ", "(逗號加空格)分隔。
        a - 返回其字符串表示形式的數(shù)組
        結果:a 的字符串表示形式,,是一個字符串
....        
class TestApi{
    public static void main(String[] args){
        
        //java.util.Scanner
        //1.找下標
        int[] arr = {8,2,0,4,5,1,6,9,3};
        int find = 5;
        int index = java.util.Arrays.binarySearch(arr,find);
        //因為這個工具的binarySearch方法會返回一個結果,,所以我要用一個變量接收這個結果
        System.out.println("index="   index);

        //2.排序,從小到大
        java.util.Arrays.sort(arr);
        for(int i = 0;i < arr.length; i  ){
            System.out.print(arr[i]   "\t");
        }
        
        
        //3.復制一個和原來長度一模一樣的數(shù)組,兩倍長就是arr.length * 2
        //int[] xin = java.util.Arrays.copyOf(arr, arr.length);
        //復制數(shù)組前3個,;
        //int[] xin = java.util.Arrays.copyOf(arr, 3);
        //要復制arr數(shù)組,,但是我想要從arr[2]復制到arr[5],
        //int[] xin = java.util.Arrays.copyOfRange(arr,3,5 1);
        //要復制arr數(shù)組,但是我想要從arr[2]開始到最后,,并且新數(shù)組的長度是10
        //假設原數(shù)組夠長,,新數(shù)組的長度要10,從[2]~[11],,但是11不包含,,所以寫12
        //int[] xin = java.util.Arrays.copyOfRange(arr, 2, 12);
        
        //4.填充
        int[] arr1 = new int[10];//用3填充數(shù)組arr
        //java.util.Arrays.fill(arr1, 3);
        
        java.util.Arrays.fill(arr1, (int)(Math.random()*100));
        
        
        
        for(int num : arr1){
            System.out.print(num   "\t");
        }
        
        String str = java.util.Arrays.toString(arr);
        System.out.println(str);
        
    }
    
}

?

來源:http://www./content-1-84051.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多