[Javaチュートリアル] Java配列

黄舟
リリース: 2016-12-26 13:22:09
オリジナル
1331 人が閲覧しました

Java 配列

配列は、すべての編集言語にとって重要なデータ構造の 1 つです。もちろん、言語が異なれば配列の実装と処理も異なります。

Java 言語で提供される配列は、同じ型の固定サイズの要素を格納するために使用されます。

100 個の独立変数 (number0、number1、...、number99) を直接宣言する代わりに、numbers[100] などの配列変数を宣言できます。

このチュートリアルでは、Java 配列の宣言、作成、初期化について紹介し、対応するコードを示します。

配列変数を宣言する

まず、プログラムで配列を使用する前に、配列変数を宣言する必要があります。配列変数を宣言するための構文は次のとおりです:

dataType[] arrayRefVar;   // 首选的方法

或

dataType arrayRefVar[];  // 效果相同,但不是首选方法
ログイン後にコピー

注: 配列変数を宣言するには、dataType[] arrayRefVar の宣言スタイルを使用することをお勧めします。 dataType arrayRefVar[] スタイルは C/C++ 言語に由来しており、C/C++ プログラムが Java 言語を迅速に理解できるようにするために Java で採用されています。

以下は、これら 2 つの構文のコード例です:

double[] myList;         // 首选的方法

或

double myList[];         //  效果相同,但不是首选方法
ログイン後にコピー

配列の作成

Java 言語は new 演算子を使用して配列を作成し、構文は次のとおりです:

arrayRefVar = new dataType[arraySize];
ログイン後にコピー

上記の構文ステートメントは 2 つのことを行います。 :

1. dataType[arraySize] を使用して配列を作成します。

2. 新しく作成した配列の参照を変数 arrayRefVar に代入します。

以下に示すように、配列変数の宣言と配列の作成は 1 つのステートメントで完了できます:

dataType[] arrayRefVar = new dataType[arraySize];
ログイン後にコピー

また、次の方法で配列を作成することもできます。

dataType[] arrayRefVar = {value0, value1, ..., valuek};
ログイン後にコピー

配列の要素はインデックスによってアクセスされます。配列のインデックス付けは 0 から始まるため、インデックス値の範囲は 0 から arrayRefVar.length-1 までです。

次のステートメントは、まず配列変数 myList を宣言し、次に 10 個の double 型要素を含む配列を作成し、その参照を myList 変数に割り当てます。

double[] myList = new double[10];
ログイン後にコピー

以下の画像は、配列 myList を示しています。ここで、myList 配列には 10 個の double 要素があり、それらの添え字の範囲は 0 から 9 です。

[Javaチュートリアル] Java配列

配列の処理

配列の要素の型と配列のサイズが決まっているため、配列の要素を処理する場合、通常は基本ループまたはforeachループを使用します。

この例は、配列の作成、初期化、操作方法を完全に示しています:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // 打印所有数组元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // 计算所有元素的总和
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // 查找最大元素
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}
ログイン後にコピー

上記の例は次のようにコンパイルして実行されます:

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
ログイン後にコピー

foreach ループ

JDK 1.5 では、A foreach ループと呼ばれる新しいループ タイプが導入されています。または拡張ループを使用すると、添字を使用せずに配列を走査できます。

この例は、配列 myList 内のすべての要素を表示するために使用されます:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // 打印所有数组元素
      for (double element: myList) {
         System.out.println(element);
      }
   }
}
ログイン後にコピー

上記の例のコンパイル結果と実行結果は次のとおりです:

1.9
2.9
3.4
3.5
ログイン後にコピー

数组作为函数的参数

数组可以作为参数传递给方法。例如,下面的例子就是一个打印int数组中元素的方法。

public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}
ログイン後にコピー

下面例子调用printArray方法打印出 3,1,2,6,4和2:

printArray(new int[]{3, 1, 2, 6, 4, 2});
ログイン後にコピー



数组作为函数的返回值

public static int[] reverse(int[] list) {
  int[] result = new int[list.length];

  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
    result[j] = list[i];
  }
  return result;
}
ログイン後にコピー

以上实例中result数组作为函数的返回值。


Arrays 类

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:

给数组赋值:通过fill方法。

对数组排序:通过sort方法,按升序。

比较数组:通过equals方法比较数组中元素值是否相等。

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

具体说明请查看下表:

序号

方法和说明

1    public static int binarySearch(Object[] a, Object key)
用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。    

2    public static boolean equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。    

3    public static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。    

4    public static void sort(Object[] a)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。    

 以上就是【java教程】Java 数组的内容,更多相关内容请关注PHP中文网(www.php.cn)!


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート