2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Java~String型を使った演算子の注意~

Posted at

1. はじめに

今回は、String型を使った演算子についてです。
ちょっと注意が必要な箇所があるので記事を分けてます。

String型には、いくつかの演算子をそのままの意味では使えないことがあります。
というより、全く別物のように考えてもらっても構わないかと。

2. 注意点

2.1. ==演算子

この==演算子を、String 型で使おうとした場合は、大抵思い通りにならないかと思います。

Main.java
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 の部分を置き換えた新しいソースをのせておきます。

Main.java
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. + 文字列連結

次に、文字列連結の際の問題です。
文字列と数字を連結させる場合は、+ で連結することができます。

Main.java
public class Main {
	public static void main(String[] args) {

		System.out.println("1 + 2 = " + 3);

	}
}

こんな感じで、、
表示されるのは、1 + 2 = 3 となっているはず。

そして、よくあるミスとしては以下のようなソースの時です。

Main.java
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 と表示したい場合は、演算の優先順位を変えてあげれば、解決です。
数学の時にも使った ( ) を使いましょう。

Main.java
public class Main {
	public static void main(String[] args) {

		System.out.println("1 + 2 = " + (1 + 2));

	}
}

1 + 2 = 3 と表示されれば、バッチリですね!

3. おわりに

Stringと演算子を使ったときの注意点を2つだけ載せてみました。

ちなみに他の演算子を使ってみてください。
コンパイルエラーになる演算子が出てくるはず。

今回は、以上です!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?