[英]Method and Variable Scope Issue in Java
我需要帮助我无法弄清楚如何修复变量的范围。 我希望这是我笔记的一个例子,但已经写了将近 2 个小时。
public class methodPractice{
String streetName;
int streetNum;
public static void streetName()
{
String streetName = "Pope Ave.";
}
public static void streetNum()
{
int streetNum = 11825;
}
public static void main(String[] args)
{
streetName();
streetNum();
System.out.println("This is your home adress: " + streetNum +
streetName);
}
}
谢谢您的帮助。
你在遮蔽田野。 使用this
来确保您获得字段或编译错误。
public static void streetName()
{
this.streetName = "Pope Ave.";
}
public static void streetNum()
{
this.streetNum = 11825;
}
这是您的main
方法,添加了行号:
1. public static void main(String[] args) {
2. streetName();
3. streetNum();
4. System.out.println("This is your home adress: " + streetNum + streetName);
5. }
几点...
当第 2 行运行时,“streetName()”调用下面的静态方法。 static
关键字表示您可以自由调用该方法本身——也就是说,您不需要对象; 你不需要先调用new methodPractice()
。
public static void streetName() { String streetName = "Pope Ave."; }
当第 3 行运行时,它是同一件事:“streetNum()”调用了一个不同的静态方法——同样,完全可以自己调用它。
public static void streetNum() { int streetNum = 11825; }
第 4 行不同,发生了一些事情。 您的期望是“streetNum”找到您在课堂上声明的int
,但它不起作用。 为什么? 因为你用“int streetNum”定义了那个成员——没有“static”。 所以呢? 没有被声明为静态的,它意味着“streetNum”属于一个对象实例。 那看起来像什么? 这是一个显示对象创建的示例,然后将对象成员“streetNum”设置为 1。
methodPractice object = new methodPractice(); object.streetNum = 1;
您可以通过将两个非静态成员声明为静态( static String streetName
和static int streetNum
)来解决此问题。 或者你可以让它们保持原样,并通过对象实例与它们交互(在执行new ..
之后)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.