かなり初心者です。全然意味がわかりません。教えてください。よろしくおねがいします。
この意味すべてわからないです。
public class TestCount{
static int counterA;
int counterB;
public static void main(String []args){
TestCount testA=new TestCount();
TestCount testB=new TestCount();
testA.count();
testB.count();
}
public void count(){
for(int i=0;i<5;i++){
counterA++;
counterB++;
}
System.out.println("counterA="+counterA);
System.out.println("counterB="+counterB);
}
}
実行結果
counterA=5
counterA=5
counterB=10
counterB=5
なんでこうなるのかが知りたいです。
No.1
- 回答日時:
クラス変数counterA は、クラスに共通な変数で1つしかありません。
インスタンス変数counterB は、インスタンス毎作られます。
なので、testA と testB のcounterB は、それぞれ別のものですが、
counterA は、testA と testB で共通の同じものです。
なので、counterB は、5回カウントアップされるので、5になり、
counterA は、testA testB で5回ずつカウントアップされるので、10になります。
No.2
- 回答日時:
ごめんなさい、横槍を入れさせてください。
。えと、
public void count(){
for(int i=0;i<5;i++){
counterA++;
counterB++;
}
の部分は
testA.count();
testB.count();
}
によって2回転しますよね?
それならcounterAとcounterBの合計は20になるはずではないのですか??
ところが実行結果は合計25になっています。。
これはどうしてなのですか?
あと、counterAとcounterBの表示が交互にこないのはなぜなのですか??
質問者の解答を差し置いての発言、失礼しました。m(__)m
No.3
- 回答日時:
本当はこうなるはず。
counterA=5
counterB=5
counterA=10
counterB=5
結果を見てえっ。と
思ってしまいました。
理由はBLUEPIXYさんが述べられているとおり
counterAはstatic変数なのでどこかで初期化
されない限り値が保持されるためです。
No.4ベストアンサー
- 回答日時:
>この意味すべてわからないです。
順を追って説明して見ましょう。
public class TestCount{ //クラスTestCout定義
static int counterA; //static変数counterAの定義
int counterB; //普通の変数counterB定義
public static void main(String []args){
TestCount testA=new TestCount(); //インスタンスtestAの生成 TestCount型の変数testAの定義とメモリ領域の確保
TestCount testB=new TestCount(); //インスタンスtestBの生成 TestCount型の変数testBの定義とメモリ領域の確保
testA.count(); //testAのメソッドcount()の呼出し
testB.count(); //testBのメソッドcount()の呼出し
}
public void count(){ //メソッドcount()の定義
for(int i=0;i<5;i++){
counterA++; //counterA=cunterA+1
counterB++; //counterB=cunterB+1
}
System.out.println("counterA="+counterA);
System.out.println("counterB="+counterB);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java final 1 2022/06/10 22:49
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
VB.NET getとsetの概念がわかり...
-
他のファイルの変数参照
-
生成したインスタンスを削除す...
-
非staticフィールドを参照でき...
-
VB.netで標準モジュールからフ...
-
変数の参照でエラーが出てしま...
-
ファイル読み込み/書き込み速度...
-
VB.NET Newしたものを変数に代...
-
フィールドでのnewとコンストラ...
-
フォームの存在をチェックする方法
-
整数の引数に列挙を使ったとき
-
インスタンスを同じ名前で作成...
-
文字列を日付に変換でParseExce...
-
SerialPort処理でInvokeメソッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
newしないインスタンス?実体化...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
String a = "a"; と String b =...
-
エクセル(複数インスタンス)...
-
C#「オブジェクト参照が必要で...
-
他のファイルの変数参照
おすすめ情報