繁体   English   中英

Java 中的方法和变量范围问题

[英]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 streetNamestatic int streetNum )来解决此问题。 或者你可以让它们保持原样,并通过对象实例与它们交互(在执行new ..之后)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM