2013-11-26 15 views
6

私はちょうど私の古い教科書の1つを介してスキミングと、この通路はJavaで配列を定義がわかった。Javaの教科書:「配列のサイズは、コンパイル時に知られなければならない」

一次元配列であります で構成された構造化複合データ型、順序付けられた均質な要素の固定されたサイズの集まり、 に直接アクセスできます。有限は、最後の 要素があることを示します。固定サイズとは、配列のサイズをコンパイル時に に知らなければならないことを意味しますが、配列 のすべてのスロットに意味のある値が含まれている必要はありません。

私は、配列の基本を理解していると、毎日のタスクでそれらを使用して快適ですが、私は配列の大きさはコンパイル時に知らなければならないことを声明で非常に混乱しています。

非常に単純なJavaプログラムは、アレイは、実行時に可変サイズでインスタンス化することができることを実証している:

import java.util.Scanner; 

public class test 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter a number: "); 
     int size = scan.nextInt(); 
     int[] array = new int[size]; 
     System.out.println("You just create an array of size " + array.length); 
    } 
} 

これは、コンパイル実行し、エラーなし最後に達します。

何がありますか?

+0

この特定の教科書(リンク、著者、名前)に関する追加情報を投稿できますか? –

+0

著者は、ここでは非常に不正確な定義をしていると言わなければならない。 OPには非常に有効な批判があります。私は単に著者が間違っていると言っている、または彼の言葉が彼の考えを正しく提示していない。配列サイズがコンパイル時にわかっているとしたら、(古い)C/C++ –

+0

のようなケースについて話しています。この本は、Dale、Joyce、およびWeemsによるJava(First Edition)を使用したオブジェクト指向データ構造です。この段落は90ページにあります。 – CptSupermrkt

答えて

3

これは非常にあまり言い切れない段落ですが、それをゆるやかに解釈すると正しいです。

例では、配列のサイズはコンパイル時にはです。サイズはsizeです。

あなたは理解している「定数」「静的」またはで「コンパイル時に知られている」解釈しています。もちろん、わかっているように、JVMはsizeという値に基づいて動的にメモリを割り当てます。

著者はおそらく、寸法が初期化時に指定する必要はありませんArrayList、のような配列と何かを区別しようとしています。

0

ここでは、配列のサイズは「サイズ」です。コンパイラは "サイズ"に何があるのか​​気にしません。メモリはコンパイル時には割り当てられず、実行時に割り当てられます。コンパイル時には変数を直接チェックして値を取得しません。実行時にコンパイラが「サイズ」に存在するものを認識し、メモリを割り当てます。

関連する問題