アプリ版:「スタンプのみでお礼する」機能のリリースについて

今日は、javaの初心者です、宜しくお願いします。
下のようなプログラムを書きました。
「System.out.print(t.aa);の箇所で、「t.aaを解決できません、t.aaはフィールドではありません」」とのエラーです。
「int aa ; int bb ;」は「test()」の外側においてやる必要があるのでしょうか、何故「test()」の中に書くと駄目なのかが
分かりません、外側においてやるとエラーはないです。
宜しくお願いします。


=======================================================================

class test
{
//int aa ;
//int bb ;

test()
{
int aa = 10 ;
int bb = 20 ;
}
}

public class kei
{
public static void main(String[] args)
{
test t = new test();
System.out.print(t.aa);
}

}

A 回答 (4件)

変数のスコープの話ですね。



変数のスコープがメソッド(コンストラクタ)に留まるからです。
(コンストラクタ範囲内だけ有効なローカル変数となります)
クラス変数としたいならクラスの括弧内で宣言しないとだめです。
--
上記から
t.aaはフィールドではありませんは
tオブジェクトにaaというフィールド(変数)がないということになります。ローカル変数を外部クラスから参照する事はできません。

・・・説明がうまくできなかったけど、どうでしょう。
    • good
    • 0

図書館に行けば、無料で本があるので、


文法書一冊くらい読もうよ!!!!!
    • good
    • 0

class test


{
// int aa ;
// int bb ;

何で、注釈文になっているの
意味不明

int aa = 10 ;
int bb = 20 ;

何で、aa,bbを再定義しているの??

意味不明
    • good
    • 0

変数は{}で囲まれた範囲内に書かれている場合、対応する}が来ると消滅します。


test(){}の中に書くとtest()のインストラクタが実行中は有効ですが、実行終了すると消滅します。
その外のコメントアウトされているところに書くと、class testが終了するまでは存在します。

グローバル変数とローカル変数で調べるとどんなテキストでも書いてありますよ。
    • good
    • 0
この回答へのお礼

皆さん、回答ありがとう御座いました、自分でももっと勉強してみます。
今後とも宜しくお願いします。

お礼日時:2009/11/08 10:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!