この記事を開始する前に、次の質問を検討してください
オートコンプリート機能を備えたIDEを使用せずに配列の長さを取得するにはどうすればよいですか?そして、文字列の長さを取得する方法は?
ジュニアレベルと中級レベルの両方を含む、さまざまなレベルのプログラマーに尋ねました。それらのどれもこの質問に正確かつ自信を持って答えることはできません(この質問に正確かつ自信を持って答えることができれば、ほとんどの中間プログラマーよりもこの知識が優れていることを証明しています)。現在、多くのIDにはコード完了機能があるため、開発者は非常に表面的に多くの問題を理解できます。
上記の質問に対する正解は次のとおりです。
int [] arr = new int [3]; system.out.println(arr.length); //使用長さを使用してarray string str = "abc"; out.println(str.length()); // use length()を取得して文字列の長さを取得します
それで、問題は、なぜ配列に長さの属性があるのに、文字列はそうではないのですか?または、文字列にはなぜlength()メソッドがあるのですが、配列はありませんか?
アレイに長さの属性があるのはなぜですか?
まず、アレイは、同じタイプの固定数の値を含むコンテナオブジェクトです。配列が作成されると、その長さが固定されます。配列の長さは、最終インスタンス変数の長さとして使用できます。したがって、長さは配列の属性と見なすことができます。
配列を作成するには2つの方法があります。
1.配列式を介して配列を作成します。
2。値を初期化して配列を作成します。
いずれにせよ、配列が作成されると、そのサイズが固定されます。
式を使用して配列を作成する方法は次のとおりです。これは、要素タイプ、配列の寸法、および少なくとも1つの寸法の配列の長さを指定します。
この宣言方法は、次元の長さを指定するため、要件を満たしています(配列にはint、寸法は2、最初の寸法は3です)
int [] [] [] arr = new int [3] [];
配列の初期化を使用して配列を作成する場合、すべての初期値を提供する必要があります。フォームは、{および}を使用してすべての初期値を一緒に囲み、それらを分離することです。
int [] arr = {1,2,3};注記:
ここに質問があるかもしれません。 Arrayサイズは初期化時に指定されるため、 int[][] arr = new int[3][];定配列の2番目の寸法のサイズを与えることなく、配列int[][] arr = new int[3][];定。では、このarrの長さは「定義」されていますか?
実際、arrの長さは3です。実際、Javaのすべての配列は、実際には1次元配列であっても、Javaのすべてのアレイです。たとえば、ARR、3つのスペースが割り当てられ、各スペースには「2次元」アレイになる1次元配列のアドレスが保存されます。しかし、arrの場合、彼の長さは3です。
int [] [] a = new int [3] []; System.out.println(a.length); // 3int [] [] b = new int [3] [5]; System.out.println(b.length); // 3
Javaで定義された文字列のような配列クラスがないのはなぜですか
配列もオブジェクトであるため、次のコードも合法です。
オブジェクトobj = new int [10];
アレイには、clone()を除き、オブジェクト(Javaの配列の継承関係)から継承されたすべてのメソッドが含まれています。なぜ配列クラスがないのですか? Javaにはarray.javaファイルはありません。簡単な説明は、それが隠されていることです(注:Javaの配列は基本的なデータ型に少し似ており、組み込みの種類であり、実際のクラスはそれに対応するクラスはありません)。この質問について考えることができます - アレイクラスがある場合、それはどのように見えますか?すべての配列要素を保存するには、引き続き配列が必要ですよね?したがって、配列クラスを定義することは良い考えではありません。 (翻訳者のメモ:ここでは少し混乱するかもしれません、理由は少し似ています:鶏が卵や鶏と一緒に生まれることの問題、そして比phorはそれほど適切ではないかもしれません、それを自分で理解してください)
実際、次のコードを使用して、配列のクラス定義を取得できます。
int [] arr = new int [3]; system.out.println(arr.getClass());
出力:
クラス[i
「クラス[i」は、メンバータイプがintの配列であるクラスオブジェクトのランタイムタイプの署名を表します」
Stringに長さ()メソッドがあるのはなぜですか?
文字列の背後にあるデータ構造はcharアレイであるため、不要なプロパティを定義する必要はありません(プロパティは既にchar値で提供されているため)。 Cとは異なり、Javaのcharの配列は文字列に等しくありませんが、文字列の内部メカニズムはcharアレイによって実装されます。 (注:c言語では、文字列クラスはありません。文字列の定義は通常char string[6] = "hollis";の形式を使用します。)
注: char []を文字列に変換するには、次の方法があります。
char [] s = {'a'、 'b'、 'c'}; string string1 = s.tostring(); string string2 = new string(s); string string3 = string.valueof(s);要約します
上記は、この記事のコンテンツ全体です。この記事の内容が、Javaの学習や使用のすべての人に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。