学习Java – 8

在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语句内首次给变量赋值,然后尝试在后续处理中使用该变量的值,则会出现错误。

可能不知道你想说什么,
写作者可能也在想“嗯?嗯?”是吗?
这种感觉,请不要在意。

发生错误的时候是以下情况:

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%为真,
并且if块内的处理将被执行,所以我以为这样就可以了。
但是,这是错误的。

如果在if语句中首次给变量赋值,这就是问题的关键。因此,在之前先给变量b赋一个适当的值。

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语句内使用该变量也是可以的,所以我决定记住这一点。

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语句时,务必注意变量赋值的时机的错误。