![](/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.