![](/img/trans.png)
[英]Static member 'android.content.Context.MODE_PRIVATE' accessed via instance reference
[英]how private static instance variable is accessed in main()
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()。
是的,它是静态的,但是由于它与main方法位于同一类中,因此可以由该类中的静态方法(包括main)来访问...实际上,也可以由同一类中的普通方法进行访问
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++;
}
}
如果将成员变量声明为私有,则意味着只能从同一类中的方法访问它。 您的main()
方法实际上是同一类中的静态方法,因此它可以访问任何私有变量。
由于main在同一类中,因此您可以访问私有变量。
私有成员变量对于该类的任何方法(静态或非静态)均可见。 静态方法可以执行哪些操作有一些限制,但是这些限制与可见性规则是分开的。
但是公共类测试{private int a; 公共静态无效main(string [] args){system.out.print(a); }
}
您不能直接在main()中访问实例变量'a'...它将显示错误bcoz,它是私有的……但是如何访问私有的静态变量...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.