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()..请解释
答案 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它是私有的......但它如何访问私有静态...