Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 - Fatal编程技术网

在java中访问其他方法变量?

在java中访问其他方法变量?,java,Java,我不明白为什么这不起作用。您应该将I作为参数传递给方法eg()。 在代码中,i是main方法中的一个局部变量。因此,您的eg()方法无法访问它 尝试: 您应该将i作为参数传递给方法eg()。 在代码中,i是main方法中的一个局部变量。因此,您的eg()方法无法访问它 尝试: 您在下面的方法中得到一个编译器错误 public static void main(String[] args) { String i = "A"; eg(i); } 因为i是main方法的局部

我不明白为什么这不起作用。

您应该将
I
作为参数传递给方法
eg()。

在代码中,
i
是main方法中的一个局部变量。因此,您的
eg()
方法无法访问它

尝试:


您应该将
i
作为参数传递给方法
eg()。

在代码中,
i
是main方法中的一个局部变量。因此,您的
eg()
方法无法访问它

尝试:

您在下面的方法中得到一个编译器错误

public static void main(String[] args) {
     String i = "A";
     eg(i);
   }
因为
i
是main方法的局部变量。您不能使用其他方法访问

您可以做的是,将该变量传递到您想要的位置

 public static void eg(){
      System.out.println("    " + i);
   }
您在下面的方法中得到一个编译器错误

public static void main(String[] args) {
     String i = "A";
     eg(i);
   }
因为
i
是main方法的局部变量。您不能使用其他方法访问

您可以做的是,将该变量传递到您想要的位置

 public static void eg(){
      System.out.println("    " + i);
   }
因为
eg()
方法不知道变量
i
。它仅在
main()
方法的范围内。您需要将其传递给
eg()
方法,或者使其成为实例变量(在本例中为静态变量)

因为
eg()
方法不知道变量
i
。它仅在
main()
方法的范围内。您需要将其传递给
eg()
方法,或者使其成为实例变量(在本例中为静态变量)


您无法从函数
eg()
访问
String i
,因为它是在
main
的范围内声明的。您可以通过将
字符串i
置于主函数上方,在全局范围内声明
i
。或者将其作为参数传递给函数,例如:

public static void main(String[] args) {
   String i = "A";
   eg(i);
}

public static void eg(String i){
   System.out.println("    " + i);
}
并将函数调用更改为:

public static void eg(String i){

您无法从函数
eg()
访问
String i
,因为它是在
main
的范围内声明的。您可以通过将
字符串i
置于主函数上方,在全局范围内声明
i
。或者将其作为参数传递给函数,例如:

public static void main(String[] args) {
   String i = "A";
   eg(i);
}

public static void eg(String i){
   System.out.println("    " + i);
}
并将函数调用更改为:

public static void eg(String i){

这是一个范围问题。函数eg()无法“看到”变量i,因为它不在其视图中。但是,如果您执行了以下操作:

eg(i);

因为现在变量的作用域是整个类文件,而不仅仅是主方法。

这是一个作用域的问题。函数eg()无法“看到”变量i,因为它不在其视图中。但是,如果您执行了以下操作:

eg(i);

因为现在变量作用域是整个类文件,而不仅仅是主方法。

因为
i
只存在于主作用域中。您必须在
eg
函数中传递
i
,就像这样
eg(String param)

,因为
i
只存在于主作用域中。您必须在
eg
函数中传递
i
,就像这样
eg(String param)
这就是所谓的
范围问题<代码>范围
是可见变量的代码区域。例如:

public class Document1 {
    String i = "A";

    public static void main(String[] args) {

        eg();
    }

    public static void eg(){
        System.out.println("    " + i);
    }
}
这是一个非常有用的链接来解释这个概念

对于您的问题,您只需在方法中声明一个变量。应将其设置为参数化方法:

private void doSomething()
{
     String value = "this can only be used inside doSomething()";
}

这就是所谓的
范围问题
<代码>范围是可见变量的代码区域。例如:

public class Document1 {
    String i = "A";

    public static void main(String[] args) {

        eg();
    }

    public static void eg(){
        System.out.println("    " + i);
    }
}
这是一个非常有用的链接来解释这个概念

对于您的问题,您只需在方法中声明一个变量。应将其设置为参数化方法:

private void doSomething()
{
     String value = "this can only be used inside doSomething()";
}

这一切都与变量作用域有关——“作用域”表示变量可访问的位置

在您的代码中,
i
是一个“局部变量”,它的作用域仅在声明它的方法内(实际上仅在声明它之后)。这就是为什么其他方法无法“看到”它

方法的参数也被视为局部变量

下一级是实例变量,其作用域是所有方法,但仅在实例的上下文中-每个实例都有自己的副本

在这之后,您就有了静态变量,其作用域是每个实例——定义它的每个类只有一个副本


要“修复”代码,您可以:

  • 将变量作为参数传递给
    eg()
    方法
  • 创建一个
    静态
    变量,该变量将在方法外部声明
  • 因为您的方法是静态的,所以实例变量没有帮助,但是如果您使您的方法成为实例方法(非静态)并创建了类的实例,那么实例变量将起作用

这一切都与变量作用域有关-“作用域”表示可以访问变量的位置

在您的代码中,
i
是一个“局部变量”,它的作用域仅在声明它的方法内(实际上仅在声明它之后)。这就是为什么其他方法无法“看到”它

方法的参数也被视为局部变量

下一级是实例变量,其作用域是所有方法,但仅在实例的上下文中-每个实例都有自己的副本

在这之后,您就有了静态变量,其作用域是每个实例——定义它的每个类只有一个副本


要“修复”代码,您可以:

  • 将变量作为参数传递给
    eg()
    方法
  • 创建一个
    静态
    变量,该变量将在方法外部声明
  • 因为您的方法是静态的,所以实例变量没有帮助,但是如果您使您的方法成为实例方法(非静态)并创建了类的实例,那么实例变量将起作用

为什么期望它工作?变量i不可用于eg()方法,因为它不在范围内。你应该多读一点关于变量m的内容