配列変数の宣言「その2」
- 配列変数の宣言には2種類があります。
- init()メソッドを使って配列変数の範囲を指定する方法は二つあります。
- (1)を指定する場合には、(1)は配列変数であるにもかかわらず、[] なしでも指定ができます。逆に、(2)を指定する場合には(1)の指定方法は使えません。これはなぜでしょうか?
- ベストアンサー
配列変数の宣言「その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)は配列変数であるにもかかわらず、[] なしでも指定ができるのでしょうか? 知っていれば教えてください。
- exprosion
- お礼率90% (9/10)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)も(2)も、整数値配列への参照を宣言してます。 new int[10]で、サイズが10の整数配列を生成してますので、変数hairetuに代入できます。ですので、 > hairetu = new int[10]; は、問題ないです。それに対して、 > hairetu[] = new int[10]; は、単なる文法誤りでないかと。
関連するQ&A
- 配列変数の宣言「その1」
「その1」 僕の見たことのある配列変数の宣言の仕方は2種類あります。 (1)・・・ int hairetu[]; (2)・・・ int [] hairetu; 現在は配列変数であることが分かりやすいという点で (2)が推奨されているというようなことは本で読んだことがあります。 今まではどちらかというと(1)をよく使っていました。 そこで、みなさんのご意見を聞いて、 今後どちらを使うのか考えてみたいと思いました。 (1)の良い所や良くない所、(2)の良い所や良くない所などもあれば教えてほしいです。
- ベストアンサー
- Java
- c# 配列変数の宣言について
c#の配列変数の宣言についてですが、 以下の2つの宣言は同じことなのでしょうか。 (1)int[] num = {1,2,3}; (2)int[] num = new int{1,2,3}; 本では(2)のような定義していますが何かルールのようなものがあるのでしょうか。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- C# 配列の変数宣言について。
C#についての質問です。 新たなint型の配列dataを作るため変数宣言文を、以下のように書きました。 int[] data; すると、以下のような警告文が出ました。 『フィールド'IntArray.data'は割り当てられません。常に既定値nullを使用します。』 そこで調べてみたところ、「newしていないからこのような警告文が出る」ということがわかったので、以下のように書き換えました。 private int[] data = new int[]; すると今度は 『配列を作成するには、配列のサイズまたは配列の初期化子を指定する必要があります。』 というエラー文が出てしまいました。 このとき、配列のサイズも初期化子も指定したくない場合には、どのようにプログラムを書けば良いのでしょうか? お分かりになる方がいらっしゃいましたら、ご助言をお願いします。
- ベストアンサー
- C・C++・C#
- 配列で質問があります。
小さなプログラムを配列を作りました。 3個配列を指定しそのうち2つを返すという ようなプログラムです。 バグがでてしまいメソッドのところで出ます。 Hairetu.java:9: ';' がありません。 int[] hairetu2(int box[0],int box[1]){ エラー1 作成したプログラムは以下です。メソッドの定義など見てみたのですがなぜバグが出るのかよくわかりません。教えて下さいませんか。 class Hairetu{ public static void main (String args[]){ int[] box = new int [3]; box [0] =1; box [1] =2; box [2] =3; int[] hairetu2(int box[0],int box[1]){ return box; } hairetu2 = hairetu2(box[0],box[1]); System.out.println(box); } } ^
- ベストアンサー
- Java
- 変数 と 配列
int[] kazu1 = new int[3]; int[] kazu2 = new int[3]; int[] kazu3 = new int[3]; int[] kazu4 = new int[3]; int[] kazu5 = new int[3]; int[] kazu6 = new int[3]; int[] kazu7 = new int[3]; の配列と int kazu1, kazu2, kazu3 ~ kazu19, kazu20, kazu21; と変数宣言とでは どちらがどちらが メモリ消費 を抑えれますか? 確保スピードが速いですか? 教えてください
- ベストアンサー
- Java
- メンバ変数宣言時にfinal修飾子
いつも御世話になっています。 final修飾子を使用する際で、メンバ変数宣言時で、 オブジェクト型変数にfinalをつけた際、値を変更できると思うのですが。 インターフェースで考えた時はどうなるのでしょうか? クラス型だと, final ClassA object1 = new ClassA(); classA.value = 10; //valueはint型 と記述されると思うのですが、 また、配列だと, final String[] hairetu = {"one","two"}; classA.strValue = hairetu; とするのがいいのでしょうか? 宜しくお願いします。
- ベストアンサー
- Java
- static宣言について
現在、c言語とDXライブラリを使ってゲームを製作しています。 http://okwave.jp/qa/q8270456.html 前回、このような質問をさせていただき、原因らしき箇所を突き止める所までいきました。 と言いますのも、配列の要素を指定する箇所(分かり辛かったらすいません。要素数ではありません)に、static宣言された変数を入れるとなぜかプログラムが強制終了されてしまうのです。 加えて、DXライブラリのGetColor関数にも返ってきた色をStatic宣言された変数に格納すると、何故か指定された色と違う色が出てしまうことが分かりました。 なんとか、その関数が終わる度に値を格納したかったので、色々試しました。 直接Static宣言されていない変数を間に噛ませてみたり、同じcpp内にわざわざ別の関数を用意して、そちらでStatic宣言し、値を返してみたり、と色々とやったのですが上手くいきませんでした。 ****************************************** int hairetu[20]; Static int z = 0; int x = z-1+1 hairetu[x] = zahyouX; (static宣言された変数zでhairetu[]の[]内を指定しようとするとダメ) (上記のように意味のない計算をさせてstatic宣言されていない変数を間にかませてもダメ) ****************************************** 結局の所、別のcppを用意して、ただ一つのStatic変数を+1していくだけの関数をくみ上げた所、上手くいったのですが・・・。何故このような事が起きるのでしょうか。 Static宣言された変数の決まりごと、もしくは、このような状態になってしまった原因など、見当がつきましたら教えていただけると有難いです。よろしくお願いします。
- ベストアンサー
- C・C++・C#
- JAVAAppletの配列についてフィールドで宣言は?
はじめまして。よろしくお願いいたします! 私は、JavaAppletを始めたばかりで初心者です。 実は、学校の課題のJAVAAppletの配列についてなのですが 配列はフィールドで宣言できないのでしょうか? 例えば… public class RandomNumbers extends Applet{ int ave=0; int[ ] value; value = new int [8]; public void paint(Graphics g){ for (int i = 0; i < value.length; i++){ value[i] = (int)(Math.random()*10+1); g.drawString(String.valueOf(value[i]), 30+30*i, 30); } for(int j=0;j<value.length;j++){ ave = value[j]+ave; } g.drawString(String.valueOf(ave), 30, 60); } } 上記のように記述すると、「int[] value;」の「;」にエラーが発生してしまいます。 valueの配列の生成文には問題は発生しません。 課題ではinitメソッドを使用し、このほかにもメソッドを追加する必要があるのですが、他のメソッド内でvalueの配列は使うことは出来ないのでしょうか? 回答していただければ幸いです;;
- ベストアンサー
- Java
- 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
- 配列の要素数に変数を入れたいときには
よろしくお願いします。 配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。 具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。 ご教授ください。
- ベストアンサー
- C・C++・C#
お礼
すいませんでした。 言われたとおり再度してみますと hairetu = new int[10]; の方が正解で、[]をつけると「文ではありません」 と言われてしまいました。 非常に申し訳ありませんでした。