- ベストアンサー
java 宣言と初期化
javaで配列の宣言と初期化をするとき int[] scores; scores = new int[4]; と書くと思いますが宣言と初期化を同時にすると int[] scores = new int[4];となると思いますが JPanelなどの生成でよく JPanel jp = new JPanel();などとよく見かけますが、これは JPanel jp; jp = new JPanel();と同じ意味ですか?
- shin11shin
- お礼率19% (100/511)
- Java
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
厳密には違うのですが、ほぼ同じ意味です。 宣言をして、値を代入(宣言時点ではNullオブジェクト) 宣言と同時に初期値を設定 また、配列に限らず、様々なオブジェクトの宣言時にも使用できます。 String str = new String("hogehoge"); といったように
関連するQ&A
- Javaの配列の宣言方法のメリット?
1週間ほど前からJavaを独学している者です。 C言語をその前からやっていて、初心者レベル程度ならわかると思います。 そこで、質問です。 C言語の配列宣言: int array[10]; Javaの配列宣言: int array[] = new int[10]; 二つの言語とも、要素10個のarray1次元配列変数を宣言していると思います。 C言語の書き方はシンプルなので、納得がいきますが、Javaの方はどうしてこの形で宣言をするのかわかりません。(自分が言語製作者ならシンプルな書き方を採用します) だから、このような宣言の方法をとるということは何か理由があるのだと思います。 自分が思うところ、JavaはC言語より、柔軟で多機能だとおもうので、その影響で汎用性をますために、 長くなっているのかな~?と思っています。 こんごJavaの学習を進めていくと、例えば、 int array[] = new double[10]; //←エラーになりました みたいに型のちがう、宣言が出てきたりするのでしょうか? ちらっと、学習に使っている本をみたところ、動的配列の作成は別の操作で実現しているようなので、 「動的とは関係ないのかな?」と思っています。 長くなりましたが、Javaの配列宣言のメリットを教えてください。
- ベストアンサー
- Java
- JAVAのNEW配列生成とガベージコレクション解放
ある本に、IF文内での、JAVAの配列生成で、IF文のブロックを内で生成した配列が、ブロックを抜けた際の挙動が異なると書いてありました。 NEWを使わないで生成した配列では、解放されるが(例 int[] k = {10 , 20 , 30}; ) NEWを使って生成した配列(例 int[] hoge = new int {3}; )は メモリー内に残ってしまうということでしたが、多分その後 ガベージコレクションで解放されると思いますので問題はないのですが 両者とも、メモリー内に作成(用意)された同じような変数の箱を利用しているのに どうして挙動が異なるのでしょうか? NEWを使わないで生成した配列kは、例えばk[0]の中にアドレス参照でなく 10という値がそのまま入るのでしょうか? 分かりやすく教えていただけると助かります。 よろしくお願いいたします。
- ベストアンサー
- Java
- JAVAで型を宣言するときの質問です
JAVAで型を宣言するとき CarFactory factory = new BusFactory(); のように 宣言の型はCarFactoryで、newで実際に代入するのは BusFactory()というのは どういう意味なのでしょうか? 式の左側と右側で違うクラスを書く場合は どのような点に気をつけなければならないでしょうか? ちなみにこちらのサイトにあったコードです ttp://www.syboos.jp/sysdesign/doc/20080609224443186.html
- ベストアンサー
- Java
- C# 配列の変数宣言について。
C#についての質問です。 新たなint型の配列dataを作るため変数宣言文を、以下のように書きました。 int[] data; すると、以下のような警告文が出ました。 『フィールド'IntArray.data'は割り当てられません。常に既定値nullを使用します。』 そこで調べてみたところ、「newしていないからこのような警告文が出る」ということがわかったので、以下のように書き換えました。 private int[] data = new int[]; すると今度は 『配列を作成するには、配列のサイズまたは配列の初期化子を指定する必要があります。』 というエラー文が出てしまいました。 このとき、配列のサイズも初期化子も指定したくない場合には、どのようにプログラムを書けば良いのでしょうか? お分かりになる方がいらっしゃいましたら、ご助言をお願いします。
- ベストアンサー
- C・C++・C#
- 変数の初期値
へんてこな質問かもしれません・・・ class Syokika{ public static void main(String args[]){ int[] a = new int[1]; System.out.println(a[0]); } } を実行するとどうなるかという問題なのですが、 「変数が初期化されていない」 というエラーが出ると思っていたのですが、 答えは「0と表示される」でした・・・ で、解説を見ると、「配列が生成されるときに初期値が生成される。intの場合は0だ」と書いてありました。 でも、たんにint a;とした場合にaを参照しようとすると初期化されてないですよね・・・? これはどういうことなのでしょうか・・・?
- ベストアンサー
- Java
- 配列変数の宣言「その2」
「その2」 「その1」でも述べましたが、配列変数の宣言の仕方は2種類あると思います。 (1)・・・ int hairetu[]; (2)・・・ int [] hairetu; この宣言をした後、init()メソッドを使いこの2つの配列変数の範囲(?)を指定したいと思います。 (1)の指定方法・・・ hairetu = new int[10]; (2)の指定方法・・・ hairetu[] = new int[10]; (2)を指定するときは(1)の指定方法が使えませんでした。これはなぜでしょうか? 逆に、(1)を指定するときには(1)は配列変数であるにもかかわらず、[] なしでも指定ができるのでしょうか? 知っていれば教えてください。
- ベストアンサー
- Java
- 動的配列を宣言するためにnew演算子とdelete演算子を用いる方法が
動的配列を宣言するためにnew演算子とdelete演算子を用いる方法があります。 2次元配列は以下のように宣言して作れるのは分かったのですが、 (実際に使って動かしてみました。) int **pp; pp = new int*[ROW]; // 行を作る for(int i = 0; i < ROW; i++) // 列を作る pp[i] = new int[COL]; http://www.asahi-net.or.jp/~uc3k-ymd/Lesson/Section02/section02_07.html(引用) 3次元配列をどのように作ったらいいか分かりません。 教えてください。宜しくお願いします。
- ベストアンサー
- C・C++・C#
- c# 配列変数の宣言について
c#の配列変数の宣言についてですが、 以下の2つの宣言は同じことなのでしょうか。 (1)int[] num = {1,2,3}; (2)int[] num = new int{1,2,3}; 本では(2)のような定義していますが何かルールのようなものがあるのでしょうか。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- 配列の初期化
java初心者です 配列の初期化についてなのですが、たとえば String[] name = {"A","B","C","D","E","F","G","H","I","J"}; int[] age = {12,18,25,18,20,32,22,15,30,37,29,24}; とありこれを10代/20代/30代に分けるとして int[] age10 = new int[?]; int[] age20 = new int[?]; int[] age30 = new int[?]; と宣言したいのですが、?にはなにを入れればいいのでしょうか? int[] ageのところから自分で数えて4/5/3と入れるのは無しです。 お手数ですがアドバイスや解説おねがいしますm(_ _)m
- ベストアンサー
- Java