MENU

【Java】toLowerCaseメソッド、toUpperCaseメソッドを、全角文字や記号を含む文字列で実行したらどうなるのか?

こんにちは。
最近、toUpperCaseメソッド、toLowerCaseメソッドを勉強したんですが、ちょっとした疑問がわいてきました。

  • 上記のメソッドを、日本語の文字列で実行した場合、どのような結果になるのか?全角の小文字(「ぁ」「ゃ」)等を含んだ文字列の場合は大文字になるのか?
  • また、「@」「*」等の記号を含んだ文字列の場合は?

 
せっかくなので、実際にやってみました。

 

public class Main{
  public static void main(String[] args){
    String s1 = "Java programming";
    String s2 = "じゃば";
    String s3 = "[]{]@:;/.,}";
    String s4 = "Javaじゃば@";
    System.out.println(s1.toLowerCase());
    System.out.println(s1.toUpperCase());
    System.out.println(s2.toLowerCase());
    System.out.println(s2.toUpperCase());
    System.out.println(s3.toLowerCase());
    System.out.println(s3.toUpperCase());
    System.out.println(s4.toLowerCase());
    System.out.println(s4.toUpperCase());
  }
}


今回は、以下の4つの例を設定して、toLowerCaseメソッドとtoUpperCaseメソッドを実行しました。 

  • 半角文字のみ
  • 全角の小文字を含んだ全角文字
  • 記号のみ
  • 半角文字、全角文字、記号すべて含んだ文字列

結果、こうなりました↓

 

[Command: cmd '/c javac -Xlint Main.java && java Main']
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
java programming
JAVA PROGRAMMING
じゃば
じゃば
[]{]@:;/.,}
[]{]@:;/.,}
javaじゃば@
JAVAじゃば@
[Finished in 0.638s]

 
上記からわかったこと

  • 文字列が全角文字若しくは記号を含んでいても問題なく実行できる。
  • しかし、全角文字、記号の場合は何も行われない
  • 全角の小文字についても、何も行われない
  • 半角文字、全角文字、記号が混合している文字列の場合、半角文字のみメソッドが作用する

全角の小文字を大文字にするには、他の手段を考える必要があるようですね。
しかし、全角半角混じっていても半角だけ大文字(小文字)化するとは・・・
Javaって器用ですね。