在Java中声明布尔变量的正确方法是什么?

use*_*031 9 java variables boolean

我刚开始学习Java.在我关注的在线课程中,我被要求尝试以下代码:

String email1 = "meme@me.coh";
String email2 = "meme@me.com";
Boolean isMatch = false;

isMatch = email1.equals (email2);

if (isMatch == true){
    System.out.println("Emails match");
}
else{
    System.out.println("Emails don't match");
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么isMatch在下一行我要求声明为false时我正在比较电子邮件地址并将值分配给isMatch.
我已经尝试了以下代码,它似乎工作原理相同:

String email1 = "meme@me.coh";
String email2 = "meme@me.com";
Boolean isMatch;

isMatch = email1.equals (email2);

if (isMatch == true){
    System.out.println("Emails match");
}
else{
    System.out.println("Emails don't match");
}
Run Code Online (Sandbox Code Playgroud)

在课程中,它没有解释为什么我isMatch首先宣布为假.isMatch在比较电子邮件地址之前,我有必要声明为假吗?

Tom*_*icz 13

不仅没有必要首先声明它false,我还会添加一些其他改进:

最后但并非最不重要的:

if (isMatch == true)
Run Code Online (Sandbox Code Playgroud)

可表示为:

if (isMatch)
Run Code Online (Sandbox Code Playgroud)

这使得isMatch标志不那么有用,内联它可能不会损害可读性.我建议那里寻找一些更好的课程/教程......


Lev*_*von 8

你不必,但有些人喜欢显式初始化所有变量(我也这样做).特别是那些使用各种语言编程的人,更容易拥有始终初始化变量的规则,而不是逐个语言地逐个语言地决定.

例如,Java具有Boolean,int等的默认值.另一方面,C不会自动给出初始值,除非您自己明确指定值,否则无论在内存中发生什么都是最终的结果.

在上面的例子中,正如您所发现的那样,代码也可以在没有初始化的情况下工作,因为变量是在下一行中设置的,这使得它看起来特别多余.有时您可以组合这两行(声明和初始化 - 如某些其他帖子中所示)并获得两种方法中的最佳方法,即使用email1.equals (email2);操作结果初始化您的变量.

  • 谢谢 Levon 的解释,让我很容易理解。我计划最终学习其他语言,所以我会遵循你的建议并初始化我的变量,以便我习惯这样做。 (2认同)