Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于一个方法中单独代码部分的澄清(带花括号)_Java_Performance - Fatal编程技术网

Java 关于一个方法中单独代码部分的澄清(带花括号)

Java 关于一个方法中单独代码部分的澄清(带花括号),java,performance,Java,Performance,在一个方法中使用单独的花括号部分编写代码是一种好的做法吗 public String getName() { String returnValue; { int a=0; --- 1 - 5 lines---- } { int a=0; --- 6 - 10 lines---- }

在一个方法中使用单独的花括号部分编写代码是一种好的做法吗

    public String getName()
    {
       String returnValue;

          {
             int a=0;
           --- 1 - 5 lines----
          }

          {
            int a=0;
           --- 6 -  10 lines----
          }

    return returnValue;

    }
如果这是一个好的做法,那么我的下一个问题是。 我在方法中声明了相同的变量两次,但都在块中。是否意味着每个块占用单独的\额外内存?我就在这里吗?如果我错了,请纠正我。

这样做不是一个好做法

当你需要这样做的时候,这是一个急需重构的信号,也就是Martin Fowler所说的“代码气味”

变量的作用域仅限于该块,并且在该块退出时将被垃圾收集

{
   int i = 0;
}
//the scope of i will end here and will be eligible for garbage collection
这样做不是一个好的做法

当你需要这样做的时候,这是一个急需重构的信号,也就是Martin Fowler所说的“代码气味”

变量的作用域仅限于该块,并且在该块退出时将被垃圾收集

{
   int i = 0;
}
//the scope of i will end here and will be eligible for garbage collection

所有变量只能在定义的块内访问,例如

{
    int a=0;
    --- 1 - 5 lines----
}
a
变量只能在此块中访问

  • 它占用更多的内存吗

    例如,这就像在循环中定义变量一样。您不必担心,因为内存管理几乎是传递给垃圾收集器的

  • 这是一种好的做法吗

    有时,这种方法会导致错误。就我个人而言,我宁愿跳过这样的结构,想想那些有意义的名字。这对源代码的可读性有好处,imho


所有变量只能在定义的块内访问,例如

{
    int a=0;
    --- 1 - 5 lines----
}
a
变量只能在此块中访问

  • 它占用更多的内存吗

    例如,这就像在循环中定义变量一样。您不必担心,因为内存管理几乎是传递给垃圾收集器的

  • 这是一种好的做法吗

    有时,这种方法会导致错误。就我个人而言,我宁愿跳过这样的结构,想想那些有意义的名字。这对源代码的可读性有好处,imho


    • 这通常不是最佳做法,因为它会降低代码的可读性


      至于内存,每个块都有自己的作用域,因此占用单独的内存。更具体地说,在执行第一个块后,可以对其作用域限制在该块作用域内的每个变量进行垃圾收集。

      这通常不是最佳做法,因为它会降低代码的可读性


      至于内存,每个块都有自己的作用域,因此占用单独的内存。更具体地说,在执行第一个块之后,每个范围的变量都被限制为块的范围。
      我同意所有人的说法,这通常是一种不好的做法
      我同意所有人的说法,这通常是一种不好的做法

      如果变量将在这两部分中声明和使用,只需在这两部分之前声明和初始化它。关于内存,让JVM来处理这个问题,不要在过早的优化中工作。你会有疯狂的范围问题。您已经在复制代码(初始化
      inta
      两次)。如果变量将在两个节中声明和使用,只需在节之前声明并初始化它即可。关于内存,让JVM来处理这个问题,不要在过早的优化中工作。你会有疯狂的范围问题。您已经在复制代码(初始化
      inta
      两次)。感谢您的澄清!谢谢你的澄清!谢谢你的澄清!谢谢你的澄清!谢谢你的澄清!谢谢你的澄清!