Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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_Scope - Fatal编程技术网

Java-专用作用域

Java-专用作用域,java,scope,Java,Scope,在JS中,您可以执行以下操作,例如: (function() { var x = 7; })(); console.log(x); 这将记录未定义的日志,因为x只在它自己的小范围内定义 在java中,做同样事情的原始/最佳/常规方法是什么 不是因为我觉得它看起来很难看: ... public static void main(String[] args) { do { int x = 7; } while (false) {} System.o

在JS中,您可以执行以下操作,例如:

(function() {
    var x = 7;
})();

console.log(x);
这将记录未定义的日志,因为x只在它自己的小范围内定义

在java中,做同样事情的原始/最佳/常规方法是什么

不是因为我觉得它看起来很难看:

...
public static void main(String[] args) {
    do {
       int x = 7;
    } while (false) {}

    System.out.println(x);
}
...

谢谢。

如果您希望x是私有的,那么您可以将其声明为私有 //如果你不希望x是私有的,你可以给任何访问说明符

private int x;

and can initialize it later 
as

public static void main(String[] args) {
    do {
       x = 7;
    } while (false) {}

    System.out.println(x);
}
您的代码:

 public static void main(String[] args) {
        do {
          int x = 7;
        } while (false) {}

        System.out.println(x);
    }

这将引发未定义的异常,因为该变量是在do内部定义的,因此其作用域仅在do循环之前,因此无法在外部访问。

JavaScript是一种解释语言,因此在运行时会出现此类错误。不同的是,Java是一种编译语言,因此编译器在编译时捕获这种错误


在运行时的Java程序中不可能出现这种错误。

他要求的是方法范围变量,而不是类字段。为什么要向下投票?请确切地解释为什么没有足够的研究工作。真的,如果你这样认为的话,你会早些加上那条评论。@你到底在问什么?你的问题有一个标题,上面写着私有作用域,而在你要问的关于变量作用域的框中?@Murplyx你已经有了一个变量作用域,应该足以让变量作用域出错了,但是有没有比丑陋的while循环甚至不是循环更令人窒息的方法呢?@Murplyx你想要一个平滑的方法来得到错误?!我可以问一下原因吗?这不是ror的问题,而是要在java中获得与JS相同的代码。正如我所说的,这是不可能的。两种语言遵循完全不同的概念。