🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

599閲覧

配列の宣言の仕方について2

satoshiiiiii

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2019/11/26 13:10

編集2019/11/26 13:11

超初歩的な質問失礼します。
二次元配列に九九の数字を出力するクラスについてです。

package info.searchman; public class Practice { public static void main( String[] args ) { int kuku[][] = new int[9][]; for( int i = 0 ; i < 9 ; i++ ) { kuku[i] = new int[9]; for( int j = 0 ; j < 9 ; j++ ) kuku[i][j] = ( i + 1 ) * ( j + 1 ); } //配列 kuku に値を代入する for( int i = 0 ; i < 9 ; i++ ) { for( int j = 0 ; j < 9 ; j++ ) System.out.printf( " %2d", kuku[i][j] ); System.out.println(); } } }

疑問点①
以下の文は9x9を宣言していて、最後の括弧内は省略可ということであってますか?

int kuku[][] = new int[9][];

疑問点②
以下の文はどうして必要なのでしょうか?

kuku[i] = new int[9];

お手数ですがご回答のほどお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

必ず押さえなければいけないのは、Javaのいわゆる二次元配列は、『配列の配列』であることです。
例えば、次のようにObject型の配列を作るとします。

Java

1Object[] objs = new Object[3];

これは次のように書いても実質同じです。()

Java

1Object[] objs = {null, null, null};

int[]型の配列を作っても同じことで、次の二つのコードは実質同じ意味です。

Java

1int[][] arr = new int[3][];

Java

1int[][] arr = {null, null, null};

: 手元で試してみたところ、バイトコードは異なりました。


疑問点②

以下の文はどうして必要なのでしょうか?

kuku[i] = new int[9];

全ての要素がnullなので、要素にアクセスする前に配列オブジェクトを作る必要があります。

疑問点①

以下の文は9x9を宣言していて、最後の括弧内は省略可ということであってますか?

int kuku[][] = new int[9][];

9x9ではありません。9要素のint[]型の配列を生成しています。


なお、次のように書いても問題無く動作する筈です。こちらの方が直感的かもしれません。

Java

1// ↓ 前回の回答にも書きましたが、[]は型に付けるのが一般的です 2int[][] kuku = new int[9][9];

この場合 kuku[i] = new int[9]; は不要です。

投稿2019/11/26 13:44

LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satoshiiiiii

2019/11/26 14:00

ご回答ありがとうございます。 大変わかりやすい説明でモヤモヤが解消されました。 感謝いたします。
guest

0

そもそもJavaの基本がわかっていないようなので、まずはそこらへんをきちんと学びましょうよ。

ここで回答したところであなたにとっても意味不明でしょう

投稿2019/11/26 13:14

y_waiwai

総合スコア88040

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satoshiiiiii

2019/11/26 13:24

答えになってないですよ。基本を勉強する過程で質問してるのですが、いけませんか?
y_waiwai

2019/11/26 13:27

別に答えてるつもりもありません。 他人に質問する前にしっかり学びましょうよ。 ここで答えたところで、あなたにとって何も得るものもないでしょう。
satoshiiiiii

2019/11/26 13:32

あなたは回答しないでください。
y_waiwai

2019/11/26 13:34

とがめられたからといって逆ギレはみっともないですね。 残念ながら、私の回答をあなたは止める権利はありません。
satoshiiiiii

2019/11/26 13:37

確かに止める権利はありませんね。 お互い恥ずかしいのでこれくらいにしましょう。 失礼な返答すみませんでした。
y_waiwai

2019/11/26 13:40

ということで、自己満足のために他人に迷惑をかけるようなことはやめておきましょう
y_waiwai

2019/11/26 14:40

おお、宣伝してくれているのねw
y_waiwai

2019/11/26 14:51

まあ、いつものパターンだとしばらくすると退会済みになると。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問