🌟

【Java】メンバ変数とstatic変数?

2022/07/16に公開

メンバじゃなくstaticで宣言すると領域が1つしかないらしいんだけど、どゆことやねん!ってw
複数インスタンス化してみてやっと理解♪
松本さん用に新規オブジェクト作成したのに浜田さん用のオブジェクトから上書きされてました。
そーゆー1つってことね♪
スッキリしました!寝ます!


コードをコピーしてDokojavaに貼り付けます
このマークをクリックすると実行できます

// ファイル名
// Main.java

// インスタンス化(オブジェクト作成)のためのクラス
class Sample_Class{
	// インスタンス変数(メンバ変数)
	int memberVal ;
	void setMemberVal(int MemberVal){
		memberVal = MemberVal ;
	}
	int getMemberVal(){
		return memberVal ;
	}
	// static変数
	static int staticVal ;
	static void setStaticVal(int StaticVal){
		staticVal = StaticVal ;
	}
	int getStaticVal(){
		return staticVal ;
	}
}
class Main{
	public static void main (String[] args){
		// インスタンス化(オブジェクト作成)
		Sample_Class tanaka = new Sample_Class();
		// オブジェクトの利用
		tanaka.setMemberVal(123456789);
		// インスタンス化(オブジェクト作成)
		Sample_Class suzuki = new Sample_Class();
		// オブジェクトの利用
		suzuki.setMemberVal(896457833);
		// インスタンス化(オブジェクト作成)
		Sample_Class matsumoto = new Sample_Class();
		// オブジェクトの利用
		matsumoto.setStaticVal(567540332);
		// インスタンス化(オブジェクト作成)
		Sample_Class hamada = new Sample_Class();
		// オブジェクトの利用
		hamada.setStaticVal(77777777);
		
		System.out.println("田中さんの社員番号 : " + tanaka.getMemberVal());
		System.out.println("鈴木さんの社員番号 : " + suzuki.getMemberVal());
		System.out.println("松本さんの社員番号 : " + matsumoto.getStaticVal() + "      ←領域が1つだから浜田さんのセットで上書きされてる ");
		System.out.println("浜田さんの社員番号 : " + hamada.getStaticVal());
	}
}

↓実行結果

Discussion