するJavaSE(8)配列:一次元アレイ、二次元アレイ、動的配列、静的配列

図1に示すように、1次元配列

宣言するために1.1およびアレイ初期化
宣言方法を:

String str[]; //不建议使用
String[] str2;

静的初期化:初期化と同時に割り当て

String[] str = new String[]{“aa”,”bb”}
String[] str2 = {“aa”,”bb”} //声明和初始化不可以分开

動的初期化:初期化と代入別途

String[] str = new String[5];//5代表是数组的长度

説明:成功した場合かどうかは、静的または動的な初期化初期化は、アレイが作成され、アレイの不変の長さ。

1.2は、配列の要素を呼び出し

String[] names = new String[5];
  1. 配列インデックス(添え字:0から始まります
  2.  値:文字列str =名[0]
  3.  割り当て:名前[0] = "AA";

アレイの1.3プロパティ - 長さ(配列の長さ)

names.length;

1.4配列を横断

for (int i = 0; i < citys.length; i++) {
            System.out.println(citys[i]);
}

1.5配列要素のデフォルト値    

デフォルト値は、デフォルトとメンバ変数の(特定の要素タイプに依存する)配列要素と同じです。

メモリアレイの1.6分析

図2に示すように、二次元アレイ

2.1宣言のアレイ初期化
配列ステートメント:

String[][] names;
String[] names[]; //不建议
String names[][]; //不建议

静的初期化:

names = new String[][]{{“aa”,”bb”},{“cc”,”dd”}}
String[][] names = {{“aa”,”bb”},{“cc”,”dd”}}

動的初期化:

String[][] names = new String[3][2];
//3是二维数组的长度。2是二维数组元素的长度
String[][] names = new String[2][];
names[0] = new String[2];
names[1] = new String[3];

2.2配列の要素を呼び出します

String name = names[1][0];
names[0][0] = “aa”; //赋值

配列の2.3プロパティ:長さ

String[][] s = new String[3][2];
s.length //数组的长度
s[0].length //二维数组中0位置上元素的长度

2.4配列を横断

// 5.遍历二维数组的元素
        for (int i = 0; i < aa.length; i++) {

            String[] str = aa[i]; // 二维数组中的元素 for (int j = 0; j < str.length; j++) { System.out.println(str[j]); // 遍历的是二维数组中元素(一维数组)的元素 } } //下面的为标准的二维数组元素的遍历方式 for (int i = 0; i < aa.length; i++) { for (int j = 0; j < aa[i].length; j++) { System.out.println(aa[i][j]); // 遍历的是二维数组中元素(一维数组)的元素 } } 

要素の2.5二次元アレイのデフォルト値

デフォルト値は、二次元配列の要素がnullである1です。

メモリの二次元アレイの2.6分析

図3に示すように、共通のアルゴリズムの配列

        // 求数组元素的最大值
	public int getMaxNumber(int[] numbers) { int max = numbers[0]; for (int i = 1; i < numbers.length; i++) { if (max < numbers[i]) { max = numbers[i]; } } return max; } // 求数组元素的最小值 public int getMinNumber(int[] numbers) { int min = numbers[0]; for (int i = 1; i < numbers.length; i++) { if (min > numbers[i]) { min = numbers[i]; } } return min; } // 求数组元素的总和 public int getSum(int[] numbers) { int sum = 0; for (int i = 0; i < numbers.length; i++) { sum += numbers[i]; } return sum; } // 求数组元素的平均值 public int getAvg(int[] numbers) { int sum = getSum(numbers); return sum / numbers.length; } // 数组的复制 public int[] getCopyArray(int[] numbers) { int[] copyNumber = new int[numbers.length]; for (int i = 0; i < numbers.length; i++) { copyNumber[i] = numbers[i]; } return copyNumber; } // 数组的反转 public void reverse(int[] numbers) { // 数组的反转 System.out.println(); for (int i = 0, j = numbers.length - 1; i < numbers.length / 2; i++, j--) { int temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } //线性查找 public int searchNumber(int[] numbers,int findNumber){ int index = -1; //查找的数据所在的索引值。 for (int i = 0; i < numbers.length; i++) { if(findNumber == numbers[i]){ index = i; break; } } return index; } //排序 //boo 为false从小到大,如果为true 从大到小 public void sort(int[] numbers,boolean boo){ if(boo){ for (int i = 0; i < numbers.length - 1; i++) { //循环几轮 for (int j = 0; j < numbers.length - 1 - i; j++) { // 循环几次 if(numbers[j] < numbers[j + 1]){ int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } }else{ for (int i = 0; i < numbers.length - 1; i++) { //循环几轮 for (int j = 0; j < numbers.length - 1 - i; j++) { // 循环几次 if(numbers[j] > numbers[j + 1]){ int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } } }

バブルアルゴリズム:

        冒泡排序:
        for (int i = 0; i < numbers.length - 1; i++) { //循环几轮 for (int j = 0; j < numbers.length - 1 - i; j++) { // 循环几次 if(numbers[j] < numbers[j + 1]){ int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } }

4、配列のツールを使用して

            

図5に示すように、一般的な例外の配列

第一:ヌル・ポインタ例外- のNullPointerExceptionの
第二:添字境界- はIndexOutOfBoundsException

コード:

    public static void main(String[] args) { int[] numbers = new int[2]; //下角标越界 // numbers[2] = 5; // System.out.println(numbers[2]); // numbers[-1] = 5; //下角标越界 // System.out.println(numbers[2]);//下角标越界 //空指针异常 String[] persons = new String[2]; //将字符串中的字符全部转成大写 System.out.println("aaaa".toUpperCase()); //下面会报空指针异常,因为persons[0]中的元素是null // System.out.println(persons[0].toUpperCase()); String[][] persons2 = new String[2][]; // System.out.println(persons[0].charAt(0)); //空指针异常 String[] names = {"aa","bb"}; System.out.println(names[0].toUpperCase()); //其它常见的空指针异常 ArrayException exception = new ArrayException(); Person person = null; // person = new Person(); System.out.println(exception); System.out.println(person); exception.personShow(person); } public void personShow(Person person){ person.show(); }

図6に示すように、パラメータの可変数

フォーマット:メソッド名(変数型...変数名)
内容:

    1. 修正することができるパラメータの数は、一つ以上の0であってもよいです
    2. 加えて、他のパラメータがあるメソッドは、パラメータを変更することができる場合、パラメータが最後に変更することができます。
    3. 変形可能なパラメータの1つの方法だけ
    4. アレイ部を用いた可変パラメータおよびパラメータ法を用いる方法が同じです

おすすめ

転載: www.cnblogs.com/wushaopei/p/12204097.html