記事内にはプロモーションが含まれています

【Java】大文字と小文字を変換する方法!Stringとcharの使い方など

【Java】大文字と小文字を変換する方法!Stringとcharの使い方など Java

Javaプログラミングにおいて、ユーザーからの入力を統一したり、検索機能で大文字・小文字を区別せずにヒットさせたりするために、文字の変換処理は避けて通れません。

「文字列全体を大文字にしたい」
「1文字だけ小文字に変換したい」
「大文字と小文字を区別せずに比較したい」

こうした要望は、Java標準のクラスライブラリを使えば簡単に実現できます。

しかし、String クラスと char 型(Character クラス)では使うメソッドが異なり、初心者が混乱しやすいポイントでもあります。

この記事では、Javaにおける大文字・小文字の変換方法について、基本の toUpperCase / toLowerCase から、文字単位の変換、そして実務で役立つ比較テクニックまでをサンプルコード付きで徹底解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はこじんまりとしたプログラミングスクールを運営
  • モットーは「利他の精神」

文字列(String)を大文字・小文字に変換する方法

Javaで文字列全体を一括で変換する場合、String クラスのメソッドを使用するのが最も一般的です。

特別なライブラリをインポートする必要もなく、直感的に利用できます。

toUpperCaseで大文字に変換する

文字列をすべて大文字にするには、toUpperCase() メソッドを使用します。

import java.util.Locale;

public class StringToUpperExample {
    public static void main(String[] args) {
        String text = "Java Programming";

        // すべて大文字に変換
        String upperText = text.toUpperCase();

        System.out.println("元の文字列:" + text);
        System.out.println("変換後:" + upperText);
        
        // 【推奨】実務ではLocale.ROOTを指定して環境依存を防ぐ
        String safeUpperText = text.toUpperCase(Locale.ROOT);
        System.out.println("安全な変換後:" + safeUpperText);
    }
}

実行結果

元の文字列:Java Programming
変換後:JAVA PROGRAMMING
安全な変換後:JAVA PROGRAMMING

text.toUpperCase() を呼び出すことで、text に含まれる小文字のアルファベットがすべて大文字に変換された新しい文字列が返されます。

重要なのは、String は「不変(イミュータブル)」であるため、元の変数 text の中身自体は変わらないという点です。

変換後の結果を利用したい場合は、必ず新しい変数(ここでは upperText)で受け取る必要があります。

【重要】実務では Locale.ROOT を指定しよう

引数なしの toUpperCase() は、実行しているPCの言語設定(デフォルトロケール)によって挙動が変わることがあります。

例えば、トルコ語環境では小文字の i を大文字にすると、点のない I ではなく、点付きの İ に変換されるといった違いがあります。

IDの比較やデータベースのキー生成など、どの環境でも同じ結果になってほしい場合は、text.toUpperCase(Locale.ROOT) のようにロケールを明示的に指定するのが安全な書き方です。

toLowerCaseで小文字に変換する

逆に、文字列をすべて小文字にするには、toLowerCase() メソッドを使用します。

public class StringToLowerExample {
    public static void main(String[] args) {
        String text = "Java Programming";

        // すべて小文字に変換
        String lowerText = text.toLowerCase();

        System.out.println("元の文字列:" + text);
        System.out.println("変換後:" + lowerText);
    }
}

実行結果

元の文字列:Java Programming
変換後:java programming

使い方は toUpperCase() と全く同じです。

text.toLowerCase() によって、すべての大文字アルファベットが小文字に変換されます。

全角のアルファベット(例:”Java”)に対しても有効で、正しく “java” に変換されますが、数字や記号など、大文字・小文字の概念がない文字はそのまま維持されます。

文字(char)を大文字・小文字に変換する方法

文字列全体ではなく、1文字(char 型)単位で変換を行いたい場合は、ラッパークラスである Character クラスの静的メソッドを使用します。

Character.toUpperCase / toLowerCase の使い方

public class CharCaseExample {
    public static void main(String[] args) {
        char ch1 = 'a';
        char ch2 = 'Z';

        // 1文字を大文字に変換
        char upperCh = Character.toUpperCase(ch1);

        // 1文字を小文字に変換
        char lowerCh = Character.toLowerCase(ch2);

        System.out.println("a -> 大文字:" + upperCh);
        System.out.println("Z -> 小文字:" + lowerCh);
    }
}

実行結果

a -> 大文字:A
Z -> 小文字:z

Character.toUpperCase('a') のように、引数に変換したい文字を渡すと、変換後の文字が返されます。

もし変換できない文字(記号や数字など)を渡した場合は、引数の文字がそのまま返されるため、事前のチェック処理なしで安全に使用できます。

応用テクニック:先頭の文字だけを大文字にする

英語の氏名表記(”yamada tarou” → “Yamada Tarou”)のように、単語の先頭だけを大文字にしたいケースもよくあります。

Javaには「先頭だけ大文字にする」という専用メソッドはないため、substring メソッドと組み合わせて実装します。

先頭文字の抽出と結合

public class CapitalizeExample {
    public static void main(String[] args) {
        String name = "java";

        if (name != null && !name.isEmpty()) {
            // 1文字目を切り出して大文字にする
            String first = name.substring(0, 1).toUpperCase();
            
            // 2文字目以降をそのまま取得する
            String remaining = name.substring(1);

            // 結合する
            String capitalized = first + remaining;

            System.out.println("変換前:" + name);
            System.out.println("変換後:" + capitalized);
        }
    }
}

実行結果

変換前:java
変換後:Java
  1. substring(0, 1) で先頭の1文字だけを取得し、toUpperCase() で大文字にします。
  2. substring(1) で2文字目から最後までの文字列を取得します(こちらは小文字のまま)。
  3. 最後に + 演算子でそれらを結合することで、先頭だけ大文字の文字列が完成します。 空文字や null の場合にエラーにならないよう、事前のチェック(if 文)を入れるのが実務的なポイントです。

※注意:絵文字などのサロゲートペアについて
Javaの内部では文字をUTF-16で扱っています。
絵文字や一部の漢字など、2文字分(サロゲートペア)で1文字を表す文字が先頭に来る場合、substring(0, 1) は文字の上位サロゲートのみを切り出してしまい、文字化け(データの破壊)を起こす可能性があります。厳密な処理が必要な場合は注意が必要です。

大文字・小文字を区別せずに比較・判定する方法

「ユーザーIDの入力チェック」などで、”User” と “user” を同じものとして扱いたい場合があります。

一度変換してから比較することも可能ですが、Javaにはもっと便利な専用メソッドが用意されています。

equalsIgnoreCaseで比較する

String クラスの equalsIgnoreCase メソッドを使うと、大文字・小文字の違いを無視して内容が同じかどうかを判定できます。

public class IgnoreCaseExample {
    public static void main(String[] args) {
        String input1 = "Java";
        String input2 = "JAVA";

        // 通常の比較(falseになる)
        if (input1.equals(input2)) {
            System.out.println("equals:一致しました");
        } else {
            System.out.println("equals:不一致です");
        }

        // 大文字小文字を無視した比較(trueになる)
        // input1がnullだとNullPointerExceptionになるため注意
        if (input1.equalsIgnoreCase(input2)) {
            System.out.println("equalsIgnoreCase:一致しました");
        }
        
        // 定数と比較する場合は、定数からメソッドを呼ぶのが安全
        if ("JAVA".equalsIgnoreCase(input1)) {
             System.out.println("安全な比較:一致しました");
        }
    }
}

実行結果

equals:不一致です
equalsIgnoreCase:一致しました
安全な比較:一致しました

equals メソッドは厳密に文字コードを比較するため、大文字と小文字は「別の文字」として扱われます。

一方、equalsIgnoreCase は内部的に文字を揃えてから比較を行ってくれるため、ユーザーの入力ミスを許容したい場合などに非常に有効です。

ただし、input1null の場合は NullPointerException が発生します。

比較対象の片方が固定の文字列(リテラル)である場合は、"JAVA".equalsIgnoreCase(input1) のように記述することで、input1null であっても安全に(falseとして)処理できます。

Javaのスキルを活かして年収を上げる方法

以上、Javaで大文字と小文字を変換する方法について解説してきました。

なお、Javaのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。

Javaエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。

なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。

今すぐ転職する気がなくとも、とりあえず転職エージェントに無料登録しておくだけで、スカウトが届いたり、思わぬ好待遇の求人情報が送られてきたりするというメリットがあります。

併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなJavaの案件を探しやすくなります。

転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。