No.1ベストアンサー
- 回答日時:
どうなんでしょうね?
クラス、およびメソッドののfinal化は、
Javaプログラムのパフォーマンスを良くします。
Javaのパフォーマンス関係の本を見ると、
「クラスをfinalにすると効率は上がるよ。
でも再利用できなくなるから慎重にね」
と書いてあります。
ただ、ローカル変数のfinal化については、資料がありません。
気分的には、コンパイラが最適化する参考になるから、
パフォーマンスは良くなるように思います。
finalはC言語のconstにあたるものであり、
文法的には「変数の書き換えがない」ということを
強制するだけのもので、
良くはなっても悪くはならないような気がするのですが…。
簡単な実験をしてみました。
-----------
public static void main(String[] args){
int a = 5;
String b = "abc";
System.out.println(a + b);
------------
という内容のクラスと
-----------
public static void main(String[] args){
final int a = 5;
final String b = "abc";
System.out.println(a + b);
}
------------
という内容のクラスをコンパイルして、
できたclassファイルを比較してみました。
事前予想では、まったく同じファイルができると
思っていたのですが、違いました。
できたクラスファイルのサイズが、
前者が615バイト、
後者が404バイトになっていました。
これだけ見ると、パフォーマンスを良くする可能性が高いようです。
結果はJDKのバージョンで変わるとおもいますが、
それにしてもずいぶん違います。
私もこれからそうしようかな…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- イヤホン・ヘッドホン・補聴器 有線イヤホンについての質問です。 先日イヤホンジャック付きのスマホに買い換えました。それで有線のイヤ 2 2022/11/13 01:37
- 画像編集・動画編集・音楽編集 動画編集ソフトAdobe Premiere Pro、Final Cut Proこの2つの場合どちら使 1 2022/08/16 00:57
- その他(動画サービス) 動画編集初めての人が、初めてMacBook Proを購入し、Final Cut Proという動画編集 4 2023/06/24 14:31
- 英語 Knowing that an appropriate emergence profile of a 2 2022/10/17 10:01
- 画像編集・動画編集・音楽編集 動画編集するならAdobeかFinal Cut Pro Xどちらを使いますか? 2 2023/06/14 16:51
- 食べ物・食材 いちばん辛かった食べ物は? わたしは、 ペヤング獄激辛final焼きそばです。 一口食べて捨てました 10 2022/09/22 06:20
- ノートパソコン AppleのFinal Cut Proのフリートライアルをインストールしました しかしいざインストー 1 2022/05/25 09:32
- 画像編集・動画編集・音楽編集 Final Cut Proで編集中の動画で、写真ファイルやファインダーから削除したら編集中の動画も消 1 2023/03/18 20:00
- 英語 Knowing that an appropriate emergence profile of a 1 2022/10/16 20:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C++でfriendクラスにしているの...
-
Genericsの型パラメータ
-
親クラスから子クラスへアクセス。
-
構造 他のクラスの構造体を別...
-
オブジェクトのデータをもとにX...
-
[Android+Javamail]送信できません
-
visual studioのデザイナ画面で...
-
クラス間でのデータ参照
-
C#にて別クラスの関数を使いたい
-
c++,ある関数のクラスから別の...
-
アップキャスト、ダウンキャス...
-
jarファイル内のJava クラスを...
-
C# log4netの使い方
-
a href="..." とServlet
-
範囲外の数値を代入したらエラ...
-
継承したクラス側のクラス名の取得
-
java-別クラスの変数の使い方を...
-
Tomcatのpropertiesファイルの...
-
フィールドを持たないクラスが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#にて別クラスの関数を使いたい
-
c++,ある関数のクラスから別の...
-
関数内の変数に<summary>コメン...
-
C++でfriendクラスにしているの...
-
親クラスから子クラスへアクセス。
-
クラス間でのデータ参照
-
範囲外の数値を代入したらエラ...
-
C#でほかのファイルにある自作...
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
継承したクラス側のクラス名の取得
-
ひとつのファイルにクラスは1つ?
-
C# インターフェイスの実装
-
無名パッケージからのインポート
-
a href="..." とServlet
-
C# log4netの使い方
-
import と extends について
-
リレーションエンティティクラ...
-
JSPでbeanプロパティ(配列)を...
-
プログラムの変数名にするとど...
おすすめ情報