
一つのクラスの中にある変数の値を、二つの別なクラスから呼び出して、その二つのクラスのどちらから変数を参照しても同じ値が帰ってくるようにしたいのですが、いろいろ調べてもできなかったので質問させていただきますm(_ _)m
// 共有化させたい変数を持つクラス
// Var.java
public class Var{
public static int i;
public Var(int i){ this.i = i; }
public Var(){}
public static void getI(){
return i;
}
}
//クラス1
//Class1.java
public class Class1{
Var var = new Var(1);
}
//クラス2
//Class2.java
public class Class2{
Var var = new Var();
System.out.println(var.getI());
}
とした場合、Class1を実行し、次にClass2を実行すると、クラス1で定義した変数の値である 1 が戻ってくるようにしたいのですが、上記の方法では、Class2を実行すると結果は 0 になってしまいました。
まだまだ習い始めたばかりでいまいちstaticを使い切れていないと思います・・・
たとえば、PrintStreamクラスの
public static final PrintStream out
というのはどこから参照しても同じ結果なのでそのようなやり方で大丈夫だろうと思ったのですが・・・
このような方法では共有化させることはできないのでしょうか?またできないのでしたらほかのやり方がもしあった場合は教えていただきたいと思います。
どうかお願いします。
No.3ベストアンサー
- 回答日時:
Class1 のインスタンス
Var var = new Var(1);
Class2 のインスタンス
Var var = new Var();
これは、それぞれ別物を指しています(だって、自分で new と書いて新しく生成しているじゃないですか!)。
Class1 で値を入れた static 領域を Class2 で参照するには、
public class Class2{
// Var は大文字(クラス名)
System.out.println(Var.getI());
}
とします。「クラス名.staticメンバ」という書式です。ただし、共有されるためには同じ Java VM 上実行されることが条件です。
※参考
public Var(int i){ this.i = i; }
この書き方は実行はできますが、意味的には正しくありません。staticメンバ は new しないでアクセスされることが前提なので、
Var.setI(i);
Var.i = 1;
というような書き方が良いと思います(new はしません)。
なるほど…。
確かに、明らかにnewと書いているわけですから、別なメモリ空間に同じクラスオブジェクトが生成されるわけなんですねっ~。
よく分かりました!
ありがとうございました。
No.4
- 回答日時:
あれ、ryo3って、ダックスフンド飼ってない?
人違いかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 t値の計算方法 1 2022/11/29 18:37
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- Java java final 1 2022/06/10 22:49
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一部の文字列を数値に変える方法
-
Javascriptでクラスの順番を入...
-
違うクラスからの変数の共有化
-
アブストラクトとインターフェ...
-
ネストしたenumへのリフレクシ...
-
無名パッケージからのインポート
-
クラス間でのデータ参照
-
「オブジェクト志向」の考えか...
-
デシリアライズでオブジェクト...
-
javaの配列とクラス
-
VB.NETで出来てC#で出来ない???
-
この問題の解説をお願いします。
-
FilterReader クラスのカスタム...
-
C#にて別クラスの関数を使いたい
-
(クラス名.this.メソッド)って...
-
範囲外の数値を代入したらエラ...
-
相互的な検索のできるハッシュ...
-
関数内の変数に<summary>コメン...
-
Genericsの型パラメータ
-
C# log4netの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#でほかのファイルにある自作...
-
C#にて別クラスの関数を使いたい
-
クラス間でのデータ参照
-
import と extends について
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
C#のクラスライブラリでメッセ...
-
C++でfriendクラスにしているの...
-
ひとつのファイルにクラスは1つ?
-
無名パッケージからのインポート
-
継承したクラス側のクラス名の取得
-
visual studioのデザイナ画面で...
-
a href="..." とServlet
-
Java リフレクションについて
-
構造 他のクラスの構造体を別...
-
ASP Pageの孫継承のPage_Load
-
別ファイルのclassの読み込みに...
-
オーバーロードしたメンバ関数...
-
実行可能jarファイルのファイル...
おすすめ情報