Java if-else块中的花括号

Java if-else块中的花括号,java,if-statement,curly-braces,Java,If Statement,Curly Braces,我正在用java编程,我碰巧发现自己有这样一个习惯: if(nodo == null) return null; else if(nodo.izquierda!=null && nodo.derecha==null) return nodo.izquierda; else if(nodo.izquierda==null && nodo.derecha!=null) return nodo.derecha; e

我正在用java编程,我碰巧发现自己有这样一个习惯:

if(nodo == null) return null;
    else if(nodo.izquierda!=null && nodo.derecha==null)
        return nodo.izquierda;
    else if(nodo.izquierda==null && nodo.derecha!=null)
        return nodo.derecha;
    else return null; // si ambos hijos son nulos o no nulos
我的问题是:这样写是一样的吗

if(nodo == null) 
    return null;
else {
    if(nodo.izquierda!=null && nodo.derecha==null)
        return nodo.izquierda;
    else {
        if(nodo.izquierda==null && nodo.derecha!=null)
              return nodo.derecha;
        else return null; // si ambos hijos son nulos o no nulos
    }
 }
最让我困惑的是,如何在if-else块中使用花括号。有必要用花括号吗

例如:

if (something)
     if (something else)
     ...
     else (blah blah)
if (something)
      if (something else)
      ...
      else (blah blah)
这与:

if (something)
{
     if (something else)
     ...
     else (blah blah)
}
 if (something)
   {
      if (something else)
      ...
      else (blah blah)
   }
例如:

if (something)
     if (something else)
     ...
     else (blah blah)
if (something)
      if (something else)
      ...
      else (blah blah)
这与:

if (something)
{
     if (something else)
     ...
     else (blah blah)
}
 if (something)
   {
      if (something else)
      ...
      else (blah blah)
   }
在这种情况下,是的,它们是一样的,但前者比后者更难阅读。我建议始终使用大括号,即使对于由一行组成的代码块也是如此。

  • 最后两条语句执行相同的命令;省略大括号是合法的,但不建议这样做。

  • 如果
    else If
    省略大括号,则
    else If
    始终属于最里面的
    If
    语句。

  • 此URL:包含分析结果,并指出代码中省略“if语句”大括号的项目更有可能出现错误

  • 如果开发人员故意省略大括号(这是合法的),下一个查看没有大括号的代码的开发人员将不得不在心里“解析”彼此If,并将else If与最近的If语句匹配。当存在缩进对齐的大括号时,将
    if
    匹配到
    else if
    else
    要容易得多。
  • 当顶级if语句中大括号内的代码缩进4个空格,而第二级if语句中的代码缩进8个空格时,代码最容易阅读,如下所示:

    if (var1 == 1) {
        action1();
    }
    else if (var1 == 2) {
        action2();
    }
    else if (var1 == 3) {
    
        if (var2 == 1) {
            action31();
        }
        else if (var2 == 2) {
            action32();
        }
    }
    

  • 对于Java,大括号对于if-else语句是可选的。正如Jared所说,当省略大括号时,只执行下一条语句

    大括号通常有助于代码的组织和可读性,因此通常会使用大括号

    我的问题是:这样写是一样的吗

    if(nodo == null) 
        return null;
    else {
        if(nodo.izquierda!=null && nodo.derecha==null)
            return nodo.izquierda;
        else {
            if(nodo.izquierda==null && nodo.derecha!=null)
                  return nodo.derecha;
            else return null; // si ambos hijos son nulos o no nulos
        }
     }
    
    事实上,你需要问是一个很好的理由,使用括号。代码总是有两个受众,一个是编译器,另一个是任何需要阅读和推理代码的人,包括你自己未来的自己


    通常情况下,大括号对于编译器来说是不必要的,但是可以增强其他读者的可读性。

    如果
    语句使用
    if,则不需要大括号。如果它们不存在,那么如果子句If为true,则将使用下一个参数,并且仅使用下一个参数。你的else语句也是如此。如果没有方括号,则只有下一条语句是else子句的一部分,其他任何语句都不会被视为您的
    If…else…
    语句的一部分。有花括号用于封装代码块。通常,最好使用带有适当缩进的括号,以便读者清楚地知道代码所属的位置。在单行if语句中不使用花括号可能会让人对节省的2或3个字节感到自豪,但是我发现这是在代码中引入错误的最简单的方法之一,因为一个小的键入错误很容易改变大量的逻辑。虽然这段代码可以解决这个问题,如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释,并说明适用的限制和假设。
    if(nodo != null)
        if(nodo.izquierda != null && nodo.derecha == null)
            return nodo.izquierda;
        else if(nodo.izquierda == null && nodo.derecha != null)
            return nodo.derecha;
    return null;