- 締切済み
Javaに関する初歩的な質問です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- root139
- ベストアンサー率60% (488/809)
Java では同じ名前の変数の有効範囲が重なっているとコンパイルエラーになります。 変数などの有効範囲のことはスコープとも言います。 最初のaの有効範囲は、その行以降のmainメソッド全体になりますので、2番目のaと重複する区間ができてしまいます。 ---[ 有効範囲 ]------------------------- class Test{ public static void main(String args[]){ ↑ int a = 10; 最 初 { の int a = 10; // このaはここから次の行の「}」まで a } ↓ } } ---------------------------------------- ちなみに1つのメソッド内でも↓の様にスコープが重なっていなければ、同じ名前の変数を定義する事はOKです。 ---------------------------------------- class Test{ public static void main(String args[]){ { int a = 10; } { int a = 10; } } } ----------------------------------------
- mintia007
- ベストアンサー率59% (16/27)
Javaの言語規定では、 「局所変数の識別子の宣言が,同じ名前の仮引数又は同名の局所変数の範囲内に現れたら,コンパイル時エラーが発生する。」 となっています(局所変数はローカル変数とも呼びます)。例え{}ブロックで区切ってもNGです。 但し、メンバー変数を同名のローカル変数や仮引数変数等として取り扱うことはできます。 そういう規定なのでルールとして従うしかありません。 さんこうURLのちょい下にあるfor文で変数iを再定義しています。これはNG。
- vonvori
- ベストアンサー率41% (14/34)
Javaでは同じ変数名は使えません。 たとえそれが{}でくくられている別の区域であってもです。
関連するQ&A
- Exception in thread "main" java.la
Exception in thread "main" java.lang.StackOverflowError というエラーが出ます moji()にtestという変数をいれてやり、mainから、書かそうとしていますが、 Exception in thread "main" java.lang.StackOverflowError というエラーが出ますが、何故かわかりません。 宜しくお願いします。 ************************************************************ public class ArgsTest2 { public static void main(String args[]) { moji(); } public static void moji() { String[] test = {"abcde","fghij"}; main(test); } }
- ベストアンサー
- Java
- javaの質問です。その2
明日JavaのBronze試験を受けに行くのですが、全然わからずに困っています。 紫色のJavaプログラマBronzr[SE7]という本を使用しています。 本の模試の問題です。 38 Class Foo{ static int val; static int methodA() {return ++val;} } Class Test{ public static void main(String[] args){ Foo.obj =new Foo(); obj.methodA(); }} } この問題では int valと宣言していますが、初期化をしていません。 なのでnullのはずなのですが、 なぜ++valで1になるのかがよくわかりません。 null+1は計算できないと思うのですが、、、、、 明日テストなので本当に困っています。
- ベストアンサー
- Java
- Java main関数内でStatic変数使えない
JavaのStatic変数について質問です。 Main関数の中でStaticな変数を定義しようとしたところ、 final修飾子しか使えませんというエラー文言が出ます。 Main関数内でわざわざStatic変数を使用する必要はないのですが、 出来ないと言われると何故だろうと思ってしまいます。 どなたかご説明いただけないでしょうか? -------------------------------------------------------------------- class Test { public static void main(String[] args) { // 宣言時Staticは使えなく、finalでしか定義できないとエラーが出る Static int test_val = 10; // 表示 System.out.println(test_val); } }
- ベストアンサー
- Java
- javaのlengthに対して質問です
javaのlengthに対して質問です public class Gauss { public static void main(String[] args){ int[] ia = new int[101]; for (int i = 0 ; i<ia.length;i++); } } 今の場合 ia.lengthはどれくらいの長さですか? ia だから2?
- ベストアンサー
- Java
- javaの質問です 合ってるかをお願いします
間違ってる場合は何が正解かを教えてください。 よろしくお願いします 1 変数strには何が入っているか test 2 dataとstrの関係 わからないです。 public class Example5 { public static void main( String[] args ) { String data = "test."; hyouji( data ); } static void hyouji( String str ) { System.out.println( str ); } }
- ベストアンサー
- Java
- Javaについて教えてください!
sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?
- ベストアンサー
- Java
- java 戻り値についての質問です。
戻り値を使ったプログラムを作成したところエラーが出たのですが、どこを修正しなければならないのかわかりません。 [プログラム] public class Main31{ public static int add(int x, int y){ int ans = x + y; return ans; } public static void main(String[] args){ int ans = add(100 , 10); System.out.println(x +"+"+y+"="+ans); } } [エラーの内容] Main31.java:12: エラー: シンボルを見つけられません System.out.println(x +"+"+y+"="+ans); ^ シンボル: 変数 x 場所: クラス Main31 Main31.java:12: エラー: シンボルを見つけられません System.out.println(x +"+"+y+"="+ans); ^ シンボル: 変数 y 場所: クラス Main31 エラー2個 どこを直せば良いのかと、このプログラムだとエラーが出てしまう理由を教えてください。よろしくお願いいたします。
- ベストアンサー
- Java
- コンパイル時のエラー。
いつも大変お世話になりありがとうございます。 public static void main(String[] args)は何の意味があるのですか? http://www.task-notes.com/entry/20150930/1443582000 などを見てもイマイチ納得がいきません。 下記のプログラムでは public static void main(String[] args)がないためにエラーになりました。 解らないため適当な箇所に付け足したら、また異なったエラーになりました。 ;を付け足すとまた別のエラーが出ます。 ご多忙中恐れ入ります。 アドバイスのほど宜しくお願い申し上げます。 class Hero { public static void main(String[] args) private int point; Hero(int p) {point = p; } int getPoint() { return point; } void addPoint(int p) { point += p; } } コンパイルエラー C:\JAVA>javac Hero.java Hero.java:3: エラー: ';'がありません public static void main(String[] args) ^ エラー1個
- 締切済み
- Java
- 初歩的な質問ですみません。
はじめまして。Javaの初心者です。 初歩的なことで、どうしてもわからないことがあります。 以下のような場合、 *************************************** class Oya { void func() { System.out.println("Oya"); } } class Ko extends Oya { Ko() { this.func(); } } class Main { public static void main(String[] args) { new Ko(); } } *************************************** Koクラスが初期化を完了していないのにもかかわらず func()メソッドを呼びさせてしまう理由がわかりません。なぜなのでしょうか?どうか教えてください。
- ベストアンサー
- Java