1. はじめに
今回は、String型を使った演算子についてです。
ちょっと注意が必要な箇所があるので記事を分けてます。
String型には、いくつかの演算子をそのままの意味では使えないことがあります。
というより、全く別物のように考えてもらっても構わないかと。
2. 注意点
2.1. ==演算子
この==演算子を、String 型で使おうとした場合は、大抵思い通りにならないかと思います。
public class Main {
public static void main(String[] args) {
String first = "num";
String second = "num";
first += "ber";
second += "ber";
// first の文字列を表示
System.out.println(first); // number と出力
// second の文字列を表示
System.out.println(second); // first と同じく number と出力
// first の "number" と second の "number" を比較
System.out.println(first == second); // false
}
}
今回は、便宜上 "num" で first と second ともに初期化しています。
それから frist と second の両方に "ber" を追加してます。
String型に文字列の追加は、+= で出来ます。
1行目と2行目どちらとも、"number" になっているはず!
3行目に出力されたのは、false だったかと思います。
false ということは、first と second 同じものではないということになります。
では、String型の文字列が同じであることを確認したいときはどうすればいいか。
String 型で文字列を比較したい場合は、String.equals() というものを使います。
上記の first == second の部分を置き換えた新しいソースをのせておきます。
public class Main {
public static void main(String[] args) {
String first = "num";
String second = "num";
first += "ber";
second += "ber";
// first の文字列を表示
System.out.println(first); // number と出力
// second の文字列を表示
System.out.println(second); // first と同じく number と出力
// first の "number" と second の "number" を比較
System.out.println(first.equals(second)); // true
}
}
今回の3行目は true と表示されましたね!
ちょっとややこしいかもしれませんが、String.equals() を使って文字列の比較を行ってください。
2.2. + 文字列連結
次に、文字列連結の際の問題です。
文字列と数字を連結させる場合は、+ で連結することができます。
public class Main {
public static void main(String[] args) {
System.out.println("1 + 2 = " + 3);
}
}
こんな感じで、、
表示されるのは、1 + 2 = 3 となっているはず。
そして、よくあるミスとしては以下のようなソースの時です。
public class Main {
public static void main(String[] args) {
System.out.println("1 + 2 = " + 1 + 2);
}
}
実行してもらうと、 1 + 2 = 12 と表示されたかと思います。
この時は、左からの演算になり、「"1 + 2 = " + 1」がまず行われます。
この演算結果は、「"1 + 2 = 1"」となり、String 型となってしまいます。
次に、「"1 + 2 = 1" + 2」の演算となり、「"1 + 2 = 12"」が結果となり、これも String 型になってしまいます。
この時、正常に 1 + 2 = 3 と表示したい場合は、演算の優先順位を変えてあげれば、解決です。
数学の時にも使った ( ) を使いましょう。
public class Main {
public static void main(String[] args) {
System.out.println("1 + 2 = " + (1 + 2));
}
}
1 + 2 = 3 と表示されれば、バッチリですね!
3. おわりに
Stringと演算子を使ったときの注意点を2つだけ載せてみました。
ちなみに他の演算子を使ってみてください。
コンパイルエラーになる演算子が出てくるはず。
今回は、以上です!