Javaに詳しい人、教えてください。

以下のソースで、8行目に、this.goukei+=kingakuとしてありますが、
これは、goukei+=kingakuでも同じ動作をします。

ここでは、thisをつけるべきでしょうか?

----------
class Chokinbako{
private String mochinushi;
private int zandaka;
private static int goukei;

Chokinbako(String mochinushi,int kingaku){
this.mochinushi=mochinushi;
this.zandaka=kingaku;
this.goukei+=kingaku;
}


static int getGoukei(){
return goukei;
}

void tameru(int kingaku){
this.zandaka+=kingaku;
this.goukei+=kingaku;
}
}


class Test{
public static void main(String[] args){

Chokinbako chokinbako1=new Chokinbako("Aさん",1500);
Chokinbako chokinbako2=new Chokinbako("Bさん",500);
Chokinbako chokinbako3=new Chokinbako("Cさん",100);

chokinbako1.tameru(500);
chokinbako2.tameru(1000);
chokinbako3.tameru(10000);

System.out.println("全部で"+Chokinbako.getGoukei()+"円");

}
}

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/08/03 12:59:41
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:K_SUKE No.1

回答回数73ベストアンサー獲得回数5

ポイント60pt

必要ないと思います。

thisは自分自身(インスタンス)への参照ですので、静的(static)

なフィールドに対しては必要ないと思います。

参考までに↓

http://www.nextindex.net/java/this.html

id:bonyan

ありがとうございます。Javaの参考書で、このような記述があったので、なんでthisが必要なんだろうかと、疑問に思っていました。

つけなくてもよい、ということで理解しました。

これに質問を終了させていただきます。

2007/08/03 12:59:20
  • id:KUROX
    回答欄にかけないので・・。
    閾値あげてほしいなぁ。

    --------------------------
    ここでは、thisをつけるべきでしょうか?
    つけるべきです。
    理由は
    (1)可読性があがる
    (2)thisをつけることによって速度が遅くなることはない。
  • id:KUROX
    1の人が正しいです。
    static なフィールド変数にはつけるべきではありません。
    私、間違ってます(^^;
  • id:quintia
    this. を付けても修飾相手が staticなフィールド(変数)だったら、インスタンス毎に確保されるわけじゃないから無意味だよ。
    という説明をするためのソースなのだとしたら付いている方が自然です。

    ややこしいなぁ。「付けても無意味だよと説明している」ソースなんだと思いますよ。
  • id:b-wind
    つけるなら、this じゃ無くて
    Chokinbako.goukei
    かな。

    インスタンス変数じゃないからコンパイラによっては this だとワーニングが出たはず。
  • id:bonyan
    8行目のthis.goukei+=kingakuはエラーが出ずに、
    getGoukei()で
    return this.goukei;
    とするとエラーになるので(その理由はわかります)
    なんで、8行目ではエラーにならないのかな?と疑問だったんです。

    b-windさんのおっしゃる通り、Chokinbako.goukeiと記述したほうが、クラスフィールドの値を表しているという意味ではわかりやすいですよね。

    getGoukei()も、
    return Chokinbako.goukei;
    ならエラーも出ませんでした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません