public class Document1 {
public static void main(String[] args) {
String i = "A";
eg();
}
public static void eg(){
System.out.println(" " + i);
}
}
我不明白为什么这不起作用。在java中访问其他方法变量?
public class Document1 {
public static void main(String[] args) {
String i = "A";
eg();
}
public static void eg(){
System.out.println(" " + i);
}
}
我不明白为什么这不起作用。在java中访问其他方法变量?
您在下面的方法获得一个编译器错误。
public static void eg(){
System.out.println(" " + i);
}
因为i
是主方法的局部变量。您无法使用其他方法访问。
你可以做的是,将该变量传递到你想要的地方。
public static void main(String[] args) {
String i = "A";
eg(i);
}
public static void eg(String param){
System.out.println(" " + param);
}
谢谢你,对不起,这是一个非常简单的问题,我是新来的java ...和编程一般... – abarnybox
你应该通过i
作为参数传递给方法eg().
在你的代码,i
是在main方法的局部变量。因此,您的eg()
方法无法访问它。
尝试:
public static void main(String[] args) {
String i = "A";
eg(i);
}
由于eg()
方法是不知道可变i
的。它仅在main()
方法的范围内。您需要将它传递给eg()
方法或将其设置为实例变量(在本例中为静态变量)。
public static void main(String[] args) {
String i = "A";
eg(i);
}
public static void eg(String i){
System.out.println(" " + i);
}
,因为它是在main
的范围内声明的你不能从你的函数eg()
访问String i
。您可以通过在主要功能上方放置String i
来在全球范围内声明i
。或者把它作为参数,以你的功能,如:
public static void eg(String i){
和函数调用更改为:
eg(i);
它的范围的问题。你的函数eg()不能“看到”变量i,因为它不在其视图中。但是,如果你做了如下:
public class Document1 {
String i = "A";
public static void main(String[] args) {
eg();
}
public static void eg(){
System.out.println(" " + i);
}
}
然后,它会工作,因为现在的变量的作用域是整个类文件,而不是仅仅的主要方法。
因为i
只存在于主范围内。你必须通过i
里面的eg
函数,像这样eg(String param)
。
这就是所谓的问题scope
。 scope
是变量可见的代码区域。例如:
for(int x = 0; x < 10; x++)
{
// x can only be used inside this loop.
}
另一个例子是,如果你声明一个局部变量的方法中:
private void doSomething()
{
String value = "this can only be used inside doSomething()";
}
Here是一个非常有益的链接解释的概念。
对于你的问题,你只需在方法中声明一个变量。你应该让一个参数化方法:
public void eg(String i)
{
// Your code as normal.
}
这一切都做变量范围 - “范围”的意思,其中的变量是可访问的。
在你的代码中,i
是一个“局部变量”,它只在声明它的方法范围内(实际上只声明后声明为)。这就是为什么其他方法不能“看到”它。
方法的参数也被认为是局部变量。
下一级是实例变量,其作用域是所有方法,但只在实例的上下文中 - 每个实例都有自己的副本。
之后,你有静态变量,其范围是每个实例 - 每个类只有一个副本定义它。
“修理”你的代码,你可以:
eg()
方法static
变量,这方法之外声明(S)
为什么会期望它的工作? –
变量i不适用于eg()方法,因为它不在范围内。你应该多读一点关于变量,方法和范围的内容。 – Alex
如果你的车里有一瓶威士忌,你可以在房间里喝吗?不。..除非你有一个'getter'从车里带给你:D – Maroun