在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()
- 创建一个
变量,该变量将在方法外部声明静态
- 因为您的方法是静态的,所以实例变量没有帮助,但是如果您使您的方法成为实例方法(非静态)并创建了类的实例,那么实例变量将起作用