如何在main()中访问私有静态实例变量

时间:2010-09-20 15:04:33

标签: java

public class test
{
    private static int a;
    public static void main(string[] args)
    {
        modify(a);
        system.out.print(a);
    }
    public static void modify(int a)
    {
        a++;
    }
}

我想知道如何在main()方法中直接访问私有静态变量。 虽然静态变量可以直接从静态方法访问,但变量是私有的,方法是main()..请解释

6 个答案:

答案 0 :(得分:6)

是的,它是静态的,但由于它与main方法位于同一个类中,因此可以通过类中的静态方法(包括main)访问...实际上也可以通过同一类中的常规方法访问< / p>

答案 1 :(得分:3)

modif()可以访问属性a并不会让您感到烦恼吗?然后它与main()完全相同。

关于main()的唯一特殊之处在于此方法用作应用程序的入口点。这种特殊性不会干扰main()是静态的事实。


顺便说一句,您的modif()方法并未真正访问静态a字段,因为它被参数a遮蔽了。

另一件事,a++不会做任何事情,因为你只是在方法中修改参数a的值; int是一个原语,并按值传递,因此您的代码不会更改方法范围之外的a值。

我想你想要这样的东西:

public class test{
    private static int a;
    public static void main(string[] args){
        modify(); //<--- No parameters needed here !
        system.out.print(a);
    }

    public static void modify(){ //<--- No parameters needed here !
        a++;
    }
}

答案 2 :(得分:2)

如果将成员变量声明为private,则意味着只能从同一个类中的方法访问它。您的main()方法实际上是同一个类中的静态方法,因此它可以访问任何私有变量。

答案 3 :(得分:1)

由于main位于同一个类中,因此您可以访问私有变量。

答案 4 :(得分:1)

私有成员变量对该类的任何方法都是可见的,静态或非静态。静态方法可以做什么,但这些限制与可见性规则是分开的。

答案 5 :(得分:0)

但 公共课考试 {     private int a;     public static void main(string [] args)     {              是System.out.print(a)的     }

}

你不能直接在main()中访问实例变量'a'它会显示错误bcoz它是私有的......但它如何访问私有静态...