// Sample.java public class Sample { /** * static finalフィールド。 * アクセス修飾子は付けていませんが、通常、 * クラス内でのみ使用するときはprivateフィールド、 * 他のクラスから使う時にはpublicフィールドにします。 * finalで定数値化されているので、publicでも問題 * ありません。ただ、publicフィールドの場合には * 定数値を入れる専用のクラスを作り、その中にまとめた方が * いいでしょう。 */ static final String SYSTEM_NAME = "JavaA2Z"; public static void main( String[] args ) { // 定数値SYSTEM_NAMEを使用します。 System.out.println( SYSTEM_NAME ); // JavaA2Z // staticなのでstaticメソッドからも // 普通のメソッドからも使えます。 // finalなので変更できません。 // SYSTEM_NAME = "あいうえお"; // コンパイルエラー: // final フィールド Sample.SYSTEM_NAME に値を割り当てられません。 // SYSTEM_NAMEはStringクラスの参照型変数なので、 // 参照が指し示す先のインスタンスの中身は // 変えうることができます。ただし、この場合は // Stringクラスなので、Stringクラスの性質として // 中身を変更できないため定数値として使用できます。 // 逆に言えば、そういうクラスを使用すべきということです。 } // static finalではなく、逆のfinal staticでも同じです。 final static int MAX = 300; }