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

2022-09-03 04:59:55

我刚刚开始学习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");
}

我不明白为什么要求我声明为false,而在下一行中,我正在比较电子邮件地址并将值分配给。
我尝试了以下代码,其工作原理似乎完全相同:isMatchisMatch

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");
}

在课程上,它没有解释为什么我首先宣布为假。在比较电子邮件地址之前,我必须声明为 false,这有什么原因吗?isMatchisMatch


答案 1

不仅没有必要将其声明为第一个,我还要添加一些其他改进:false

  • 使用代替(也可以无缘无故)booleanBooleannull

  • 在声明期间分配:

    boolean isMatch = email1.equals(email2);
    
  • ...如果可以,请使用关键字:final

    final boolean isMatch = email1.equals(email2);
    

最后但同样重要的:

if (isMatch == true)

可以表示为:

if (isMatch)

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


答案 2

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

例如,Java具有布尔值,int等的默认值。另一方面,C不会自动给出初始值,内存中碰巧发生的任何事情都是你最终得到的,除非你自己明确地分配一个值。

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