Blacky Blog

外資系IT企業でエンジニアをしています。 ここでは自分が読んだ本、勉強していることなど None Tech の情報を発信しています。

IT プログラミング

[初心者向け] Java 独学: 2. データ型、変数、式を理解する: 文字列を操作する

投稿日:5月 23, 2019 更新日:

このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイトや本を読んで学んだだけの方でも、挫折せず、自分で手を動かせるような構成にしていますのでおすすめの方法です。

[初心者向け] Java 独学: 2. データ型、変数、式を理解する: 文字列を操作する

こんにちは。今回はプログラミングでよく使う文字列の操作について紹介します。

CodeCampGATE

比較

比較では、文字列同士が一緒かどうかを確認します。

以下のサンプルを見てましょう。

/// Test クラス
public class Test{
    // Main メソッド
    public static void main(String[] args) {
        String a = "abc";
        String b = "abc";
        Boolean IsEquel = a==b;
        System.out.println(IsTrue);  
        return;
    }
}

String 型の a と b 変数に “abc” という文字列を入れたのち、a と b を比較した結果を出力しています。出力結果は true となっており、同じであることを意味しています。

等価演算子 “==” を使う

比較する方法の一つ目は、等価演算子 “==” を使います。等価演算子とは、データを比較するために用意された演算子のことです。

以下のコードがその例です。

Boolean IsEquel = a==b;

Boolean 型の IsEquel 変数に、 a と b の比較結果を入れています。

“a == b” は、a と b が等しいかを意味しています。等しい場合は true、等しくない場合は、false です。

逆に、等しくないかどうかを確認する演算子もあります。

“a != b” は、 a と b が等しくないかを意味しています。 等しくない場合は true、等しい場合は、false です。

String.compareTo メソッドを使う

続いて、もう一つの方法です。

/// Test クラス
public class Test{
    // Main メソッド
    public static void main(String[] args) {
        String a = "abc";
        String b = "abc";
        int result = a.compareTo(b);
        System.out.println(result);  
        return;
    }
}

String.CompreTo メソッドを使うと、他の文字列と比較できます。

        int result = a.compareTo(b);

String 型である a 変数の後ろに . (ドット) を付けて、compareTo(b) とやると、a と b を比較した結果を result 変数に入れています。

戻り値が、0 の場合、 a と b は同じ。戻り値が 0 より小さい場合、a は b より辞書順番が早い文字列です。最後に、戻り値が 0 より大きい場合、a は b より辞書順番が遅い文字列です。

CodeCampGATE

連結

連結は、文字列同士を連結します。これはよく使いますね。

/// Test クラス
public class Test{
    // Main メソッド
    public static void main(String[] args) {
        String a = "Java";
        String b = "Test";
        String c = a.concat(b);
        System.out.println(c);  
        return;
    }
}

String 型の a,b 変数を連結しています。代表的な 2 つの例を提示します。

String.concat メソッドを使う

String.concat メソッドを使うと、他の文字列と連結した文字列を取得できます。

        String c = a.concat(b);

String 型である a 変数の後ろに . (ドット) を付けて、concat(b) とやると、a と b を連結した文字列を c 変数に入れています。

演算子 “+” を使う

先ほどのコードの、 String c = a.concat(b); を以下に置き換えてください。出力結果は同じです。

        String c = a + b;

“+” 演算子を使えば同じ型の文字列であれば連結することができます。

なお、今回はあくまでサンプルとして小さな文字列の操作を例としていますが、とても大きな文字列を操作するためにはそれに適した方法が別にあります。

大文字と小文字に変換する

String.toLowerCase メソッドを使うと文字列を小文字にできます。

/// Test クラス
public class Test{
    // Main メソッド
    public static void main(String[] args) {
        String a = "Java Test";
        String b = a.toLowerCase();
        System.out.println(b);  
        return;
    }
}

ポイントは、文字列すべてが小文字になります。また、a.toLowerCase() を実行しても、a 変数のデータに影響はありません。あくまで、a 変数のデータをもとにすべてに小文字にした新たな文字列が b に格納されます。

String.toUpperCase メソッドを使うと文字列を大文字にもできます。

文字列の表示形式を変更する

文字列を希望の形式にしたいときによく使うのが String Format メソッドです。いくつかの変数を組み合わせて文字列を作るときによく使います。

複数のデータ型の変数を組み合わせる

import java.time.LocalDate;

/// Test クラス
public class Test{
    // Main メソッド
    public static void main(String[] args) {
        String name = "Java Fundamental";
        int level = 1;
        String nowdate = LocalDate.now().toString();
        String output = String.format("Level %d: %s at %s", level,name,nowdate);
        System.out.println(output);  
        return;
    }
}

“Level 1: Java Fundamental at 2019-05-20” を出力していますが、この文字列は、複数のデータ型の変数から構成されています。 String.format メソッドを使うと文字列の表示する形式を指定できます。

        String output = String.format("Level %d: %s at %s", level,name,nowdate);

上記の String.format メソッドは四つの引数を持っています。

第1: “Level %d: %s at %s”

第2: level (int型)

第3: name(String型)

第4: nowdate (String型)

第2から4までは、int や String 型の変数を指定しています。第1 引数の文字列が表示形式を指定しています。

%d は int 型の変数を挿入すること、 %s は String 型の変数を挿入することを意味しています。

つまり、 “Level %d: %s at %s” は “Level <int 型のデータ>:
<String 型のデータ> at <String 型のデータ> ” 意味しています。

そして、第2から4引数に指定したデータは、前から順番に挿入されます。

表示するデータの桁数/文字数を指定する

さらに 4 桁で表示させたい。10 文字で表示したい。など各データの表示形式も指定できます。 String output = String.format("Level %d: %s at %s", level,name,nowdate);の部分をいかに置き換えてください。

        String output = String.format("Level %04d: %20s at %10s", level,name,nowdate);

すると出力結果は少し変化しました。

まず、”Level 0001:” でレベルの数字が4桁になっています。これはデータ自体は “1” ですが、表示形式を 4 桁にしたためです。

続いて、” Java Fundamental” で名前が 20文字で表示されています。これも、データ自体は “Java Fundamental” ですが、表示形式を 20 文字にしたためです。

プリミティブデータ型を文字列に変換

int、float、boolean などの方をプリミティブ型といいます。プリミティブ型のデータを文字列に変換するときは ToString メソッドは使えません。

そこでプリミティブ型のデータを文字列に変換する 3 つの方法を紹介します。

1. String.ValueOf メソッドを使う

        int i = 42; String s;
        s=String.valueOf(i);

String.valueOf メソッドを使うと、引数に指定された変数を String 型にして返却してくれます。

2. String.Format メソッドを使う

        int i = 42; String s;
        s=String.format("%d", i);

String.formatメソッドはすでに説明したとおりです。int から String 型に変換する場合、%d を使うとint 変数を String 型にして返却してくれます。

3. データ + “” を使う。

        int i = 42;
        String s;
        s=i+"";

これはなかなかトリッキーなやり方ですができます。ポイントは、+”” です。

普通、String 型の変数に int 型のデータは入れられませんが、intのデータと共に +”” を指定すると、裏で int 型のデータを String 型に変換する処理が行われ、結果的にString 型に変換できます。

なお、もし +”” を付け加えないと、以下のようにコンパイルエラーになります。

まとめ

いかがだったでしょうか。プログラミングをはじめると文字列を多く操作するようになります。今回紹介している内容は、使っていくうちに覚えていくため、最初のうちは見て覚えていきましょう。

CodeCampGATE

-IT, プログラミング
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[初心者向け] Java 独学: 4. オブジェクト指向: インスタンス化して使用する

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

ネットワークエンジニアとしての基礎: 1. インフラストラクチャの理解: ワイヤレスネットワーク

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

ネットワークエンジニアとしての基礎: 1. インフラストラクチャの理解: ネットワークトポロジ

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

[初心者向け] Java 独学: 2. データ型、変数、式を理解する: 算術演算子を使う

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

ネットワークエンジニアとしての基礎: 3. プロトコルとサービスの理解: OSI モデル

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …