Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

変数の使用について

はじめまして。
初歩的な質問なのですが、ご教示いただければと思います。

javaを勉強しようとコードをのぞいていたのですが、例えば、arrayList1、arrayList2とあったときに、

int sizeCheck1=arrayList1.size();
int sizeCheck2=arrayList2.size();
if (sizeCheck1 == sizeCheck2) {
  ・・・・・・
  }

となっていたのですが、なぜ

arrayList1.size() == arrayList2.size()

とは書かないのでしょうか。

検索して、変数が何か、リテラルとの違いは何かはわかったように思うのですが、上記のような例(sizeだけに限らず)との違いがわかりませんでした。

領域か?とも思い、ByteBufferなども見てみたのですが、HelloWorldレベルの私にはとても使いこなせませんでした。

よろしければ教えてください。

9

回答

2184

閲覧

9件の回答

評価

0

可読性の問題。
何回か使うとき、size をわざわざ呼ばなくて良い。

評価

0

素早い回答ありがとうございます。

可読性ですか。
そのものズバリ書いてくれないと、変数宣言まで戻りかねないひよこな私・・・頑張って勉強します。

検索を続けていたらなぜか引っかかってきた、全然関係ないVBAの方では、変数を使った方が速い(操作が?)と書いてありました。javaではそんなことないのは残念ですね。

ともあれ、ありがとうございました!!

評価

0

速いというのは、何回か使うとき、size をわざわざ呼ばなくて良いからなのでは?

評価

0

size()はすでにList内にある数値を返すだけなので、違いがあっても微々たるものです。
でも、メソッド内でなにか処理をして値やオブジェクトを返しているのなら、場合によっては目に見える違いが出るかもしれません。

評価

0

あー、sizeって出したのはまずかったです。
この例に限らず、メソッド内部では何やってるかわからないからもし重い処理やってたときに、いったん変数に入れたほうが速くなるかも、といいたかったんです。

>javaではそんなことないのは残念ですね。
と書かれていたもので。

評価

0

こちらの書き方がまずかったようです。
 さんへの返信ではなかったのです。こちらも同じ箇所への返信のつもりでした。

評価

0

ご回答ありがとうございます。

>size をわざわざ呼ばなくて良い

今回はたまたま目に付いたsizeを例に挙げさせていただいたのですが、他の例であったり、メソッド内の処理によっては呼び出すよりも変数を用いたほうが速くなるということですね。

とてもよくわかりました。皆様どうもありがとうございました。

評価

0

細かいですが、size()が「変わらない」とは言っていませんよ。
大抵は、変わるか変わらないかを考えても仕方ないくらいの差だろう、というだけです。
他の例についても「変わるかもしれない」ということです。
それぞれについて実測データもなしに決定だと考えるのは、良くありません。

微々たる速度の違いよりは、全体の見通しをこそ重視しましょう。

評価

0

そうですね、まずい言い方でした、すいません。
mioさん、ご指摘ありがとうございます。

>それぞれについて実測データもなしに決定だと考えるのは、良くありません。

>微々たる速度の違いよりは、全体の見通しをこそ重視しましょう。

よく心得ておきます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。