java.util.Localeクラス
地域や言語などのロケール情報を扱うクラス
インスタンスの作成方法
1.getDefaultメソッド
public static Locale getDefault()
現在動かしているJava環境のロケール情報を取得するメソッド
戻り値:現在のJVMのロケール(例:ja_JP, en_US など)
使用例
public static void main(String[] args) throws Exception {
Locale defaultLocale = Locale.getDefault();
System.out.println("言語:" + defaultLocale.getLanguage());
System.out.println("国:" + defaultLocale.getCountry());
System.out.println("表示名:" + defaultLocale.getDisplayName());
}
2.コンストラクタを使う
Locale(String language)
Locale locale = new Locale("en"); // 英語(国は未指定)
言語だけを指定するコンストラクタ(国は指定しない)
そのため、getCountryメソッドで国を取得しても空文字が返る
Locale(String language, String country)
Locale locale = new Locale("ja", "JP"); // 日本語(日本)
Locale locale = new Locale("en", "US"); // 英語(アメリカ)
言語+国を指定するコンストラクタ
Locale(String language, String country, String variant)
Locale locale = new Locale("ja", "JP", "OSAKA");
言語+国+バリアント
バリアントは大阪弁とかイギリス英語とかの方言みたいなもの
3.ロケール定数を使う
Locale locale = Locale.JAPAN;
System.out.println(locale.getDisplayName()); // 日本語 (日本)
よく使われる国や言語の組み合わせがロケール定数としてあらかじめ定義されている。
これを使えばnewをしなくてもあらかじめインスタンス化されたインスタンスが利用できる
4.ビルダーを使う
public static void main(String[] args) {
Locale locale = new Locale.Builder()
.setLanguage("ja") // 言語コード
.setRegion("JP") // 国コード
.build(); // Localeインスタンスを生成
}
分かりやすい書き方でLocaleインスタンスを生成できる
5.forLanguageTag(String tag)メソッド
public static void main(String[] args) {
Locale locale = Locale.forLanguageTag("ja-JP");
System.out.println(locale.getDisplayName()); // 日本語 (日本)
}
ja-JP のような 言語タグ(BCP 47形式) をもとに Localeインスタンスを生成する
プロパティファイル
server_address=192.168.0.3
APIキーやパスワードなどの設定情報とプログラムコードを分ける書き方の時に使うファイル
プロパティファイルにAPIキーやパスワードなどの設定情報を分けて書くことで保守性とセキュリティ対策になる
プロパティファイルの拡張子は.properties
書式はキー=値またはキー:値
java.util.Propertiesクラス
プロパティファイルをJavaのプログラムから読み込むときに使う
読み込む手順
1.java.io.FileReaderオブジェクトやjava.io.FileInputStreamオブジェクトを生成
プロパティファイルを読み込むための通り道を作るイメージ
2.loadメソッドに1で生成したインスタンスの参照を渡す
通り道への地図を渡すイメージ
3.PropertiesオブジェクトのgetメソッドやgetPropertyにキーを渡して値を取得
public static void main(String[] args) {
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream("config.properties")) {
props.load(fis);
String server = props.getProperty("server");
String port = props.getProperty("port");
System.out.println("Server: " + server);
System.out.println("Port: " + port);
} catch (IOException e) {
e.printStackTrace();
}
}
listメソッド
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("username", "admin");
props.setProperty("password", "secret");
// すべてのプロパティを一覧表示(標準出力)
props.list(System.out);
}
キーと値のペアを一覧で表示するためのメソッド
キーに対応する値を返すメソッド
getProperty(String key) メソッド
String value = props.getProperty("username");
戻り値は必ずString
存在しないキーならnullを返す
get(Object key) メソッド
Object value = props.get("username");
戻り値はObject型
native2ascii
native2ascii input.txt output.properties
プロパティファイルで日本語を使いたいときに使うJavaの標準ツール
input.txtの中身が以下だった場合
こんにちは
output.propertiesの中身はnative2asciiで以下に変換される
\u3053\u3093\u306B\u3061\u306F
指定した文字コードでプロパティファイルを読み込む方法
Charset.forName(String charsetName)メソッド
Properties prop = new Properties();
prop.load(new FileReader(
"sample.properties",
Charset.forName("UTF-8")));
System.out.println(prop.getProperty("test"));
forNameで読み込みたい形式の文字コードを指定して、FileReaderクラスのコンストラクタに渡す
java.io.InputStreamReaderクラスのコンストラクタで指定
Properties prop = new Properties();
prop.load(new InputStreamReader(
new FileInputStream("sample.properties"),
"utf-8"
));
System.out.println(prop.getProperty("test"));
java.util.ResourceBundleクラス
ResourceBundle resource = ResourceBundle.getBundle("sample");
System.out.println(resource.getString("test"));
java.util.Propertiesと同様にプロパティファイルを読み込むための抽象クラス
getBundleメソッド
プロパティファイルを読み込むために使う
実行すると読み込みたいプロパティファイルを元にjava.util.PropertyResourceBundleクラスのインスタンスを生成
その参照が戻る
ロケール情報によって読み込むプロパティファイルを切り替えることができる
プロパティファイルを切り替えるにはsample_ja_JP.propertiesのようにアンダースコアで言語や国を書く必要がある
ロケール情報に対応するプロパティファイルがない場合、java.util.MissingResourceExceptionがスローされるので注意
抽象クラスのため、staticであるgetBundleを使う必要がある
getStringメソッド
プロパティファイルからキーを指定して値を取り出すメソッド
java.time.format.DateTimeFormatterクラス
日付や時刻を扱う、日付の表示形式を変えるためのクラス
インスタンスを生成する方法
1.事前に定義された定数を使用する
LocalDate date = LocalDate.now();
// フォーマット(→文字列)
String formatted = date.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(formatted); // 例: 2025-08-07
定数によって決まったフォーマットにformatメソッドで変換することができる
パターン文字を使用する
LocalDateTime now = LocalDateTime.of(2025, 8, 7, 13, 45, 9);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 EEEE HH:mm:ss");
パターン文字とofPatternメソッドを使って自分の好きなフォーマットにすることができる
ローカライズされたスタイルを使用する
LocalDate date = LocalDate.of(2025, 8, 7);
// ローカライズされたスタイルを使う(日本ロケール)
DateTimeFormatter formatter = DateTimeFormatter
.ofLocalizedDate(FormatStyle.FULL)
.withLocale(Locale.JAPAN);
String result = date.format(formatter);
System.out.println(result); // 例: 2025年8月7日木曜日
ofLocalizedDateメソッド,ofLocalizedTimeメソッド,ofLocalizedDateTimeメソッドなどで情報を取得する
FULL,LONGなどの列挙定数で取得した情報の密度を決める
java.text.NumberFormatクラス
NumberFormat f1 = NumberFormat.getInstance(); // 数値
NumberFormat f2 = NumberFormat.getIntegerInstance(); // 整数
NumberFormat f3 = NumberFormat.getCurrencyInstance(); // 通貨
NumberFormat f4 = NumberFormat.getPercentInstance(); // パーセント
System.out.println(f1.format(1234.56)); // → 1,234.56
System.out.println(f2.format(1234.56)); // → 1,235(四捨五入される)
System.out.println(f3.format(1234.56)); // → ¥1,234(日本ロケールの場合)
System.out.println(f4.format(0.75)); // → 75%
数値の書式を扱うクラス
メソッドによって数値の表現方法を変えられる
getInstanceメソッドは数値
getIntegerInstanceメソッドは整数型数値
getCurrencyInstanceメソッドは通貨
getPercentInstanceメソッドはパーセント