0
1

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の勉強 - 8

Last updated at Posted at 2017-05-17

ifの条件式で文字列を比較する

数値の時に使っていた「==」は文字列の比較では使えない。
文字列の時は「equals」を使う。

書き方は「==」のときと少し違っていて

変数a.equals(変数b)

と書くっぽい。
ifで変数s1とs2を比較したいときは、こんな感じで使う↓

String s1 = "tomato", s2 = "tomato";

if (s1.equals(s2)){
	System.out.println("一致");
}

これ↑はs1、s2が一致するとき、if内を実行されるが
『文字列が一致しないとき』にしたい場合は
条件式の前後を「( )」で囲んで、前に「!」をつける。

!(変数a.equals(変数b))

変数s1とs2が異なるときに、if内を実行するのは↓

String s1 = "tomato", s2 = "potato";

if (!(s1.equals(s2))){
	System.out.println("不一致");
}

「!」が否定のために使われることに慣れてきた感。

if内で変数に代入してエラーになった

変数に初めて値を入れるのがif内で、
その変数の値をその後の処理で使おうとしたらエラーになった。

何が言いたいのか分からないかもしれないけれど
書いている方も「ん?ん?」そうなのか?
な感覚なので気にしないでもらいたい。

エラーになったのは↓のとき

Yomogi.java
public class Yomogi{
	public static void main(String[] args){
		int a, b;
		a = 1;
		
		if (a == 1){
			b = 1;  // これと
		}	
		System.out.println("b = " + b);  // この関係がダメ
	}
}

変数aには1が入るんだから、ifは100%trueになって
if内部の処理が実行されるからこれでいいだろう。
と思っていたけど、ダメでした。

if内で初めて値が入る、と言うのが問題だったみたい。
なので、事前に変数bに適当な値を入れておく。

Yomogi.java
public class Yomogi{
	public static void main(String[] args){
		int a, b;
		a = 1;
		b = 0;  // 事前に0で初期化
		
		if (a == 1){
			b = 1;
		}
		System.out.println("b = " + b);
	}
}

こうしたら上手く動いてくれた。
なるほど、javaってそういう仕様なのね。

と、理解したところで。

変数に初めて代入するのがif内であっても、
その変数をif内だけで使うのはOKだったので覚えとくことにした。

Yomogi.java
public class Yomogi{
	public static void main(String[] args){
		int a, b;
		a = 1;
		
		if (a == 1){
			b = 1;
			System.out.println("b = " + b);  // if内だけで使うのはOK
		}
	}
}

ifを使うとき、変数に代入するタイミングは気を付けないとな。
と思ったエラーとの遭遇でした。

0
1
4

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?