類的入口靜態(tài)main方法可以有多個參數(shù)嗎?
作為Java程序的主類,entry函數(shù)只能是一個靜態(tài)的main方法:publicstaticvoidmain(string[]args)。任何其他參數(shù)不是字符串數(shù)組的非公共靜態(tài)main方法都不會被視為入口函數(shù)。因此,任何類只能有一個合法的入口主函數(shù)。任何靜態(tài)方法都可以直接調(diào)用,無需實例化。一個Java程序的多個類中都有main()函數(shù),編譯一定會成功,這是Java程序規(guī)范所允許的。至于哪一類開始執(zhí)行的靜態(tài)公共main函數(shù)入口取決于您在命令行上指定的類名。C:/javaTestClass會執(zhí)行testclass類中的publistaticvoidmain(string[]args)方法,不會執(zhí)行其他類的方法。
java中什么情況下可以不用定義類的對象?
不使用靜態(tài)類。
java類的成員變量有兩種:一種是由static關(guān)鍵字修飾的變量,稱為類變量或靜態(tài)變量;另一種是沒有靜態(tài)修飾的實例變量。
語法定義上的區(qū)別:靜態(tài)關(guān)鍵字應(yīng)該加在靜態(tài)變量之前,而不能加在實例變量之前。
程序運行時的區(qū)別:實例變量屬于一個對象的屬性,必須先創(chuàng)建實例對象,實例變量才能被分配空間和使用。靜態(tài)變量不屬于一個實例對象,而是屬于一個類,所以也叫類變量。只要程序加載了類的字節(jié)碼而沒有創(chuàng)建任何實例對象,靜態(tài)變量就會被分配空間并可以使用。簡而言之,實例變量只能在創(chuàng)建對象后通過這個對象使用,而靜態(tài)變量可以通過使用類名直接引用。
比如下面的程序,不管創(chuàng)建多少個實例對象,總是只賦一個staticVar變量,每創(chuàng)建一個實例對象,這個staticVar就加1;但每次創(chuàng)建實例對象時,都會分配一個instanceVar,即可能分配多個instancevar,每個instanc
多線程系統(tǒng)中如何使用靜態(tài)變量?
總體結(jié)論:java是線程安全的,即任何方法(包括靜態(tài)方法)都可以忽略線程,但有一個前提,不能有全局變量。如果有全局變量,就需要使用同步機制。
通過如下一組對比示例從頭開始解釋:
在多線程中使用靜態(tài)方發(fā)生什么?也就是說,多線程訪問同一個類的static靜態(tài)方怎么樣?會出現(xiàn)線程嗎?安全問題?
公共類測試{
公共靜態(tài)void操作(){
//...做某事
}
}
事實證明,只要不在靜態(tài)函數(shù)中處理多線程的共享數(shù)據(jù),多線程訪問同一個靜態(tài)方法就不存在資源的問題。讓讓我們看一個例子:
公共類StaticThread實現(xiàn)Runnable{
@覆蓋
公共無效運行(){
//TODO自動生成的方法存根
()
}
公共靜態(tài)voidmain(String[]args){
for(inti0ilt100i){
新線程(新StaticThread())。開始()
}
}
}
公共類StaticAction{
公共靜態(tài)inti0
公共靜態(tài)voidprint(){
intsum0
for(inti0ilt10i){
(