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

こんにちは。Javaの初心者です。

Javaの初期化メソッド(initメソッド)についてなのですが、処理を記述しても実行してくれません。

恐らく使い方が間違ってるかと思われるのですが、ネットで調べてもあまり検索結果がでてこなかったので、質問させてもらいました。

以下サンプルコード

import java.lang.*;

public class Test
{
static int a;

public void init()
{
a = 10;

}
public static void main(String[] args)
{
System.out.println(a);

}
}

実行してみても、「0」と表示されるだけで、「10」と表示してくれませんでした。

どこかコードが間違えてるのでしょうか?
それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか?
因みに関係ないかと思われますが、グローバル変数は自動的に初期化される(0が代入される)ということは知っています。

ご教授の方、よろしくお願い致します。

A 回答 (4件)

>メンバ変数はこの中でどれに当てはまるのでしょうか?


フィールドです。

>これはクラスの領域を超えて別のクラスからでもアクセスできるということでしょうか?
そうです。
ただ、「別のクラスからでもアクセスできる」ことを表すのはpublicです。
それに、別のクラスという表現だと正確ではないですね。
privateではない変数であれば、別のクラスからでもアクセスできる可能性はありますので。
publicにすることで、「あらゆるクラスから」アクセスできるようになります。
「java アクセスレベル」や「java アクセス修飾子」などで検索してみてください。

staticは変数のスコープとはまた別の意味です。
staticな変数にすることで、インスタンス毎ではなくクラス毎に保持することになります。


1冊の書籍なり1つの入門サイトなりをひととおり読んで
サンプルコードを動かすことから始めてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

一応、自分なりに独学で学んでるんですが・・・・まだまだですね・・(^^;A

今度書店でも行ってJava入門関係の本を読んでもう一度復習してみます。


ご回答、ありがとうございました。

お礼日時:2011/10/13 21:55

>それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか?


アプレット用というか、アプレット実行時にはinitメソッドが実行されるという仕様ですが、
通常のJavaアプリケーションはそうではないという事です。
なので先の回答者さんがおっしゃっているように、自分でinitメソッドを実行しなければいけません。

ちなみに、記載のコードのaはグローバル変数とは言わないかなと思います。
http://www.kab-studio.biz/Programing/JavaA2Z/Wor …
こちらも読まれてみてはいかかでしょうか。

この回答への補足

ご回答ありがとうございます。

少し気になったのですが、アドレス先で、

>>Javaの変数は、メソッド内の「ローカル変数」か、クラスの内の「フィールド」しか存在しないためである。

メンバ変数はこの中でどれに当てはまるのでしょうか?
フィールド変数と同じですか?

あと、
>>publicフィールドでかつstaticフィールドとすることで、あらゆる箇所からアクセスできる変数となる。

これはクラスの領域を超えて別のクラスからでもアクセスできるということでしょうか?

アドバイスの方、どうか宜しくお願い致します。

補足日時:2011/10/12 21:40
    • good
    • 0

initメソッドを実装したけど、実行してないですね。


オブジェクトの生成時に自動的に実行したいなら、コンストラクタで定義してください。
http://msugai.fc2web.com/java/constructor.html

今の状態は、initというメソッドを定義しただけ。

この回答への補足

ご回答ありがとうございます。

一応、このようなコードを書いたのですが。

import java.lang.*;

public class Test
{
static int a;

public void init()
{
a = 10;

}
public static void main(String[] args)
{
Test test = new init();
System.out.println(a);

}
}

initメソッドの実行はこのような感じでよろしいでしょうか?

実行してみたところ、「シンボルがみつからない」と出たのですが・・・。
どうすればよろしいでしょうか?

アドバイスの方、どうかよろしくお願い致します。

補足日時:2011/10/12 21:27
    • good
    • 0

initメソッドを実行してないから

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ググッてみます。

お礼日時:2011/10/12 21:00

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