好程式設計師Java分享Javamain十個面試題

好程式設計師IT發表於2019-06-26

   作為 Java 工程師參加面試時都會被問很多問題,那麼 Javamain 方面都會被問到哪些問題呢? 今天好程式設計師就 為大家準備一些常見的 Javamain 的基礎知識問題,幫助大家在面試前做好準備:

 

  1 、不用 main 方法如何定義一個類?

 

  不行,沒有 main 方法我們不能執行 Java 類。

 

  在 Java7 之前,你可以透過使用靜態初始化執行 Java 類。但是,從 Java7 開始就行不通了。

 

  2 main() 方法需要的引數不是字串陣列?

 

  不是的, main() 方法的引數必須是字串陣列。

 

  但是,在引進變參時,你可以將字串型別的變參作為引數傳遞給 main() 方法。變參一定得是陣列。

 

  packagecom.instanceofjava;

  publicclassMainMethod

  {

  publicstaticvoidmain(Stringargs[])

  {

  }

  }

 

  3 、我們能不能改變 main() 方法的返回型別?

 

  不能, main() 方法的返回型別只能是空。任何其它型別都是不能接受的。

 

  packagecom.instanceofjava;

  publicclassA

  {

  publicstaticintmain(String[]args)

  {

  return1;//runtimeerror:Nomainmethodfound

  }

  }

 

  4 main() 方法為什麼必須是靜態的?

 

  main() 方法一定是靜態的。

 

  如果 main() 允許是非靜態的,那麼在呼叫 main 方法時, JVM 就得例項化它的類。

 

  在例項化時,還得呼叫類的建構函式。如果這個類的建構函式有引數,那麼屆時就會出現歧義。

 

  例如,在下面的程式中,在例項化類 A ”的時候, JVM 傳遞什麼引數?

 

  packagecom.instanceofjava;

  publicclassA

  {

  publicMainMethod(inti)

  {

  //Constructortakingoneargument

  }

  publicvoidmain(String[]args)

  {

  //mainmethodasnon-static

  }

 

  5 、我們能不能宣告 main() 方法為非靜態?

 

  不能, main() 方法必須宣告為靜態的,這樣 JVM 才可以呼叫 main() 方法而無需例項化它的類。

 

  如果從 main() 方法去掉“ static ”這個宣告,雖然編譯依然可以成功,但在執行時會導致程式失敗。

 

  packagecom.instanceofjava;

  publicclassA

  {

  publicvoidmain(String[]args)

  {

  System.out.println("indhu");//Runtimeerror

  }

  }

 

  6 、我們能否過載 main() 方法?

 

  可以,我們可以過載 main() 方法。一個 Java 類可以有任意數量的 main() 方法。

 

  為了執行 java 類,類的 main() 方法應該有例如“ publicstaticvoidmain(String[]args) ”的宣告。如果你對此宣告做任何修改,編譯也是可以成功的。但是,執行不了 Java 程式。你會得到執行時錯誤,因為找不到 main 方法。

 

  packagecom.instanceofjava;

  publicclassA

  {

  publicstaticvoidmain(String[]args)

  {

  System.out.println("Indhu");

  }

  voidmain(intargs)

  {

  System.out.println("Sindhu");

  }

  longmain(inti,longd)

  {

  System.out.println("Saidesh");

  returnd;

  }

  }

 

  7 、我們能否宣告 main() 方法為 private protected ,或者不用訪問修飾符?

 

  不能, main() 方法必須 public 。你不能定義 main() 方法為 private protected ,也不能不用訪問修飾符。

 

  這是為了能讓 JVM 訪問 main() 方法。如果你不定義 main() 方法為 public ,雖然編譯也會成功,但你會得到執行時錯誤,因為找不到 main 方法。

 

  packagecom.instanceofjava;

  publicclassA

  {

  privatestaticvoidmain(String[]args)

  {

  //Runtimeerror

  }

  }

 

  8 、我們能否在 Java 中覆蓋 main 方法?

 

  不能,你不能在 Java 中覆蓋 main 方法。這是因為 main 方法是靜態方法,而在 Java 中靜態方法在編譯時會結合在一起,所以你在 Java 中不能覆蓋靜態方法。

 

  9 、我們能否在 Java 中終結 main 方法?

 

  你可以在 Java 中終結 main 方法。 JVM 對此沒問題。

 

  10 、我們能否在 Java 中同步 main 方法?

 

  是的, main 方法可以在 Java 中同步, synchronized 修飾符允許用於 main 方法的宣告中,這樣就可以在 Java 中同步 main 方法了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2648844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章