Java Basic Level3 〜About String class〜

イントロダクション

私事ですが、以前に書いた記事を再度書き直しわかりやすくしようと思いました。一応、国際化対応しておきます。※英語圏の人は何とか読んでください

はじめの記事は、Javaを始めるのに一番はじめのプログラムを作成するところからはじめます。色々と思うところはあると思いますが、以下の点に留意してもらって、とにかくはじめてみるのが良いと思います。

とりあえず、実行と解説をして見ました。

  1. 「Javaとはなんぞや?」というのはやってから理解すれば良いと思います。
  2. 慌てずにのんびりやりましょう(笑)
  3. 「知識」と「技術」の両方を使用するので「頭で理解」と「手を動かす」の両方が必要です。
  4. インプット(座学)とアウトプット(プログラムの実行・作成)を両方やるようにしましょう。

「Javaとはなんぞや?」の答えに関しては、作って、動かして、オブジェクト指向がわかった頃に答えは出ると思います。

Introduction

As for me, I will rewrite my blog for make understand easy. i will internationally.

The first article begins by creating the first program to start Java. Let’s have fun!

I think that answers will come out when making, executing, and knowing object orientation.

ロードマップ

  1. プログラムを初めて作る人向けです。コンソール画面に「Hello World」と表示するプログラムを作成します。→Mainメソッドについて理解する

  2. 計算するプログラムを作成します。計算するためには「変数」を使用する必要があります。→変数と演算子について理解する

  3. 演算子「+」「-」「++」などを使う方法、考え方を理解

  4. 文字を操作するプログラムを作成します。文字を切ったり、つなげたりして文を編集するプログラムを作成します。→文字列クラス「String」の理解【今回】

  5. Boolean型の使い方やプログラム引数など、条件分岐やループ文などで使用します。

  6. IF文の書き方と使いかた

Road Map

  1. For those who create programs for the first time. create program for display “Hello World” on the console screan.→ To understand the main method
  2. Create program for calcurate. In order to calcurate it is nessesary to use “valiable”.→To understand “valiable” and “operator”
  3. How to use operators in java code.
  4.  Create program for manipurate characters. to edit sentencces by cutting, connecting characters.→To understand String classthis time
  5. How to use Boolean and program argument
  6. How to use if statement

文字列操作(Stringクラス)

Javaで文字を扱うときに使用するデータ型(変数の型)
として「char」と「String」があります。
charはプリミティブ型というカテゴリのデータ型で、1文字のみが変数にセットできます。「==」で比較します。
Stringは参照型(クラス)というカテゴリのデータ型で、複数の文字を変数にセットできます(なので文字列)。比較メソッド(.equals())を使用します。

⑴初期化するときは下のようにやります。

// 文字(1文字だけ)
char a = ‘a’; // シングルクォーテーション
String a = “a”; // ダブルクォーテーション

⑵比較するときは、charは「==」を使用します。
Stringはメソッドを使用します。

String a = “a”;
a.equals(“a”); // trueが出力されます。

※通常、変数のにNullが入っている場合にNullPointerExceptionで落ちてしまうので「"a".equals(a)」と記述します。

兎にも角にも、コードをみてみいないと
なんとも言えないのでこちらから
ダウンロードしてください。

String manipulation(About String Class)

if you would like to manipulate String or charactor, you can use String class and char valiable(Charactor class)

⑴ when initializing, you can wite like this

char a = ‘a’; // single quote
String a = “a”; // double quote 

⑵ how to campare charctor and String

"char" is primitive data. and you can compare using "=="

<Ex1>
char a = 'a'; iif (a == 'a') { ...};

"String" is class. and you can compare using ".equals()"

<Ex2>
String a = "a"; if (a.equals("a")) { ...};
※ usually, we write 「"a".equals(a)」.cause if a valiable is Null then get "NullPointer Exception".

<問題>

・プログラム引数に「abc」「def」を渡してその引数を
以下のようにコンソールに出力してください

<Question>
・using program argument, and output 「abc」「def」to console.

——————————————————
①引数1: abc
②引数2: def
——————————————————

・上記の表示を行なった後にchar型の値「G」と「E」を
①と②の最後の部分に追加して表示してください。

・after output console. add "G" and "E" on ①, ②

※String型の変数の後にchar型を連結できればOKです。
Eclipseの画面では下のような画面でプログラム引数を追加します。

Stringクラスのメソッド使用例

public void testString() {
    // 文字列を比較した場合
    System.out.println("*** String#equals() Sample1 ****");
    if ("test".equals("tezt")) {
        System.out.println("\"test\"と\"tezt\"は等しいです。");
    } else if ("test".equals("tezt") == false) {
        System.out.println("\"test\"と\"tezt\"は等しくありません。");
    } else {
        // 実際は例外しか返ってこないので意味のないコード
        // 想定外のケースも考慮に入れる
        System.out.println("trueもfalseも帰ってこなかった場合。");
    }
    System.out.println("*** String#equals() Sample2 ****");
    // 変数に入れた文字列を比較した場合
    String str = "test";
    String str2 = "tezt";
    if (str.equals(str2)) {
        System.out.println("\"test\"と\"tezt\"は等しいです。");
    } else {
        System.out.println("\"test\"と\"tezt\"は等しくありません。");
    }

    System.out.println("*** String#equalsIgnoreCase() Sample1 ****");
    if ("test".equalsIgnoreCase("tezt")) {
        System.out.println("\"test\"と\"tezt\"は等しいです。");
    } else if ("test".equalsIgnoreCase("Test") == false) {
        System.out.println("\"test\"と\"Test\"は等しくありません。");
    } else if ("test".equalsIgnoreCase("Test")) {
        System.out.println("\"test\"と\"Test\"は等しいです。");
    } else {
        // 実際は例外しか返ってこないので意味のないコード
        // 想定外のケースも考慮に入れる
        System.out.println("trueもfalseも帰ってこなかった場合。");
    }

    System.out.println("*** String#isEmpty() Sample1 ****");
    if ("".isEmpty()) {
        System.out.println("文字列は空です。");
    }
    String tmp = null;

    System.out.println("*** String#isEmpty() Sample2 ****");
    try {
        if (tmp.isEmpty()) {
            System.out.println("文字列はNULLです。");
        }
    } catch (NullPointerException e) {
        System.out.println("実行するとNullPoineterExceptionで落ちる。");
    }
}

Stringクラスのメソッド使用例2

String str = "0123456789ABCABC";
System.out.println("*** String#contains() Sample1 ****");
if (str.contains("012")) {
    System.out.println(str + "は「012」を含んでいます。");
}
System.out.println("*** String#contains() Sample1 ****");
if (str.contains("014")) {
    System.out.println(str + "は「014」を含んでいます。");
} else {
    System.out.println(str + "は「014」を含んでいません。");
}

System.out.println("*** String#endsWith() Sample1 ****");
if (str.endsWith("ABC")) {
    System.out.println(str + "は「ABC」を末尾にあります。");
}

System.out.println("*** String#endsWith() Sample1 ****");
System.out.println(str + "は「ABC」の文字列が" + str.indexOf("ABC") + "番目に出現します。");
System.out.println(str + "は「ABC」の文字列が最後に出現するのは" + str.lastIndexOf("ABC") + "番目に出現します。");

整形する

String#format(書式文字列)のような形で記述します。
書式文字列にはただいま%d時です。というような書き方をして「%d」に値をセットする形です。

String.format("ただいま%d時です。", 12); // ただいま12時です

サンプルプログラム

    @Test
    public void testFormat() {
        String str = "これは%d円です";
        System.out.println(String.format(str, 12));

        Date date = new Date();
        String str1 = "いま%tk時です";
        System.out.println(String.format(str1, date));

    }

でわでわ。。。
see you next time. have a good day!

関連リンク一覧

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す