Javaの初期化メソッドについて

このQ&Aのポイント
  • Javaの初期化メソッドについて解説します。実行結果が思った通りに表示されない場合、正しい使い方を確認しましょう。
  • 初期化メソッドはアプレット用のものであり、アプレットを使用しない場合は意味がない可能性があります。
  • グローバル変数は自動的に初期化されることを覚えておきましょう。
回答を見る
  • ベストアンサー

Javaの初期化メソッドについて

こんにちは。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が代入される)ということは知っています。 ご教授の方、よろしくお願い致します。

  • Java
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.4

>メンバ変数はこの中でどれに当てはまるのでしょうか? フィールドです。 >これはクラスの領域を超えて別のクラスからでもアクセスできるということでしょうか? そうです。 ただ、「別のクラスからでもアクセスできる」ことを表すのはpublicです。 それに、別のクラスという表現だと正確ではないですね。 privateではない変数であれば、別のクラスからでもアクセスできる可能性はありますので。 publicにすることで、「あらゆるクラスから」アクセスできるようになります。 「java アクセスレベル」や「java アクセス修飾子」などで検索してみてください。 staticは変数のスコープとはまた別の意味です。 staticな変数にすることで、インスタンス毎ではなくクラス毎に保持することになります。 1冊の書籍なり1つの入門サイトなりをひととおり読んで サンプルコードを動かすことから始めてみてはいかがでしょうか。

rajison
質問者

お礼

一応、自分なりに独学で学んでるんですが・・・・まだまだですね・・(^^;A 今度書店でも行ってJava入門関係の本を読んでもう一度復習してみます。 ご回答、ありがとうございました。

その他の回答 (3)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

>それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか? アプレット用というか、アプレット実行時にはinitメソッドが実行されるという仕様ですが、 通常のJavaアプリケーションはそうではないという事です。 なので先の回答者さんがおっしゃっているように、自分でinitメソッドを実行しなければいけません。 ちなみに、記載のコードのaはグローバル変数とは言わないかなと思います。 http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000440.html こちらも読まれてみてはいかかでしょうか。

rajison
質問者

補足

ご回答ありがとうございます。 少し気になったのですが、アドレス先で、 >>Javaの変数は、メソッド内の「ローカル変数」か、クラスの内の「フィールド」しか存在しないためである。 メンバ変数はこの中でどれに当てはまるのでしょうか? フィールド変数と同じですか? あと、 >>publicフィールドでかつstaticフィールドとすることで、あらゆる箇所からアクセスできる変数となる。 これはクラスの領域を超えて別のクラスからでもアクセスできるということでしょうか? アドバイスの方、どうか宜しくお願い致します。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.2

initメソッドを実装したけど、実行してないですね。 オブジェクトの生成時に自動的に実行したいなら、コンストラクタで定義してください。 http://msugai.fc2web.com/java/constructor.html 今の状態は、initというメソッドを定義しただけ。

rajison
質問者

補足

ご回答ありがとうございます。 一応、このようなコードを書いたのですが。 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メソッドの実行はこのような感じでよろしいでしょうか? 実行してみたところ、「シンボルがみつからない」と出たのですが・・・。 どうすればよろしいでしょうか? アドバイスの方、どうかよろしくお願い致します。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

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

rajison
質問者

お礼

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

関連するQ&A

  • メインメソッド無しでJavaを実行する方法

    Javaにメインメソッドってあるじゃん。public static void main(string[] args){;}でお馴染みのアレです。 Javaを実行するには、javaコマンドの引数に.classファイルのファイル名を指定するよね。んで、その.classファイルにメインメソッドを含んでいる必要があって、Javaを実行するにはメインメソッドが必須だそうです。このように、参考書やWEBなどあちこちに書いてあります。 しかし、メインメソッド必須というのは、厳密には間違いなんだそうです。メインメソッドが無くてもJavaを動かす裏ワザがあると、↓のブログに書いてありました。(基本はメインメソッドだとは思うのですが) http://blogs.wankuma.com/kacchan6/archive/2007/07/24/86663.aspx ここにプログラムがザックリ書いてあったのですが、本当に動くんですか? public class MimeticMain{ static boolean init = caller(); public static boolean caller(){ System.out.println("main()が無くても動く"); return true; } } -- これを動かすと、「main()が無くても動く」と表示するんですかね。私がやると、エラーになっちゃったのですが。 エラー: メイン・メソッドがクラスMimeticMainで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) ーー あと、staticイニシャライザーを使うと、メインメソッドが無くても動くと、冒頭に書いてあります。自分なりに調べて書いてみたんですが、エラーですね。 public class MimeticMain{ public static void mMain(){System.out.println("main()が無くても動く");} static{mMain();} } メインメソッドが無くても動くって、本当?そのコードを書けますか?10行50ワード以下の簡単なプログラムで良いと思いますが。 2007年のブログらしく、当時の古いバージョンのJavaならば動くのかしら?Javaも仕様がどんどん変わっていて、バージョンアップするとメインメソッド必須になったのかしら?

    • ベストアンサー
    • Java
  • java

    コンパイルできても、実行ができません。 次のようなエラーがでます。 このエラーはどのようなエラーなのでしょうか? Exception in thread "main" java.lang.NoClassDefFoundError: test コードはただたんにHello JAVA と表示させるだけです。 class Test{ public static void main(String args[]){ System.out.println("Hello Java\n"); } }

    • ベストアンサー
    • Java
  • javaの基本的な質問

    下記を実行すると、上から順番にメソッドが実行され、 「Hello Java  Hello Java」 と表示されるような気がしてしまうのですが… なぜ、一度しか表示されないのでしょうか。 class Main { public static void main(String[] args) { hello(); } public static void hello() { System.out.println("Hello Java"); } }

    • ベストアンサー
    • Java
  • Javaについて教えてください。

    Javaのソースコードで以下のコードを実行すると表示されないのですがなぜでしょうか? public class Sample{ public static void main(String[] args){ for (int i = 0 ; i >= 5; i++){ System.out.println(i); } } }

  • Javaでメソッドの引数にメソッド

    以下のようにメソッドの引数にメソッドを渡したいです。 static void methodA(methodB, str) { methodB(str); } static void methodB(str) { System.out.println(str); } つまりメソッドAにメソッド名「methodB」と文字列「str」を渡して、間接的にメソッドBを実行させたいということです。 getMethodやinvokeを使うのかなとは思ったのですが、よく理解できませんでした。 上記のようなことは可能でしょうか?

    • ベストアンサー
    • Java
  • メソッドのオーバーライド(java)

    class A3{ void hello(){ System.out.println("A3"); } void hello(int i){ System.out.println("A3"+i); } } class B3 extends A3{ void hello(){ System.out.println("B3"); } } class C3 extends B3{ void hello(String s){ System.out.println("C3"+s); } } class MethodOverriding3{ public static void main(String args[]){ A3 obj = new C3(); obj.hello(); } } 上のプログラムを実行すると"B3"と表示されまが、どうしてクラスBのメソッドが実行されるのでしょうか? クラスAのメソッドが無視される仕組みがわかりません。 また、クラスMethodOverriding3でobj.hello("abc")としてコンパイルすると mo.java:25: シンボルを見つけられません。 シンボル: メソッド hello(java.lang.String) 場所 : A3 の クラス obj.hello("abc");   ^ エラー 1 個 とエラーが出ます。 どうしてでしょうか? 誰か教えてください、お願いします。

    • ベストアンサー
    • Java
  • java 実行できない

    javaで public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } のようなプログラムをかいて、コンパイルして、実行しようとすると エラー: メイン・メソッドがクラスStringで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要がありま というエラーがでます。コンパイルはできます。jdkは1.8.0_25を使っています。

  • Javaアプリケーションについて

    次のようなプログラムを作ってコンパイルをしました。 public class app { public static void main(String[] args) { System.out.println("Hello from Java!"); } } コンパイルまではできるのですが、 java appで実行しようとすると Exception in thread "main" java.lang.NoClassDefFoundError:app となって、アプリケーションを実行することができません。 本には、これで実行できると書いてあるのですが・・・ どなたか教えてください。

    • ベストアンサー
    • Java
  • メインメソッドの記述について

    メインメソッドを記述する際に、   public static void main(String[] args){     ~~~~~~~~~~~~~   } と書くと思いますが、なぜpublicを付けなければならないのでしょうか? 簡単に考えるために、1つのクラスのみで実行してみたのですがやはりpublicをつけないとエラーになってしまします。 1つのクラスしかないので、どこからも参照されないからpublicでなくても良いと思ったのですが・・・ ちなみに以下の様なとても簡単なもので考えました。 class E_1{ static void main(String[] args){ System.out.println("実験です"); } }

  • JAVA実行時のエラーメッセージについて

    コンパイル後、実行するとコードはどのようなものでも、同様のエラーメッセージが表示されます。 例えば、超基本の下記のソースでも表示されます。 //Sample01.java class Sample01 { public static void main (String args[]) { System.out.println("Hello World"); } } エラーメッセージは同様に、 「Excption in thread "main"java.lang.NoClassDefFoundError: Sample01」 と表示されてしまいます。 このエラーの対処方法をお願いします。

    • ベストアンサー
    • Java