
かなり初心者です。全然意味がわかりません。教えてください。よろしくおねがいします。
この意味すべてわからないです。
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.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);
}
}
No.3
- 回答日時:
本当はこうなるはず。
counterA=5
counterB=5
counterA=10
counterB=5
結果を見てえっ。と
思ってしまいました。
理由はBLUEPIXYさんが述べられているとおり
counterAはstatic変数なのでどこかで初期化
されない限り値が保持されるためです。
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.1
- 回答日時:
クラス変数counterA は、クラスに共通な変数で1つしかありません。
インスタンス変数counterB は、インスタンス毎作られます。
なので、testA と testB のcounterB は、それぞれ別のものですが、
counterA は、testA と testB で共通の同じものです。
なので、counterB は、5回カウントアップされるので、5になり、
counterA は、testA testB で5回ずつカウントアップされるので、10になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
フォームの存在をチェックする方法
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
javaのクラスの作り方、エラー...
-
「インスタンス」の意味をわか...
-
C++Builderで別Formから呼び出...
-
C#でオブジェクトの有無を取得する
-
フィールドでのnewとコンストラ...
-
ASPX(C#)で別ファイルで自分で...
-
変数の参照でエラーが出てしま...
-
VB6.0で、DLLを動的に参照したい
-
インスタンスを同じ名前で作成...
-
ファイル読み込み/書き込み速度...
-
文字列を日付に変換でParseExce...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
String.containsの反対機能はあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
C#において、同じインスタンス...
-
C# インスタンスの破棄
-
変数の参照でエラーが出てしま...
-
インスタンスを同じ名前で作成...
-
VB.NET getとsetの概念がわかり...
-
newしないインスタンス?実体化...
-
javaのクラスの作り方、エラー...
-
非staticフィールドを参照でき...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
フォームの存在をチェックする方法
-
大量のデータとインスタンスの...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
おすすめ情報