<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Java FAQ(4)

      [摘要]四、 關鍵字篇Q4.1 java里面怎么定義宏?答:java不支持宏,因為宏代換不能保證類型安全。如果你需要定義常量,可以將它定義為某個類的static final成員。參見Q4.2和Q4.6。Q4.2 java里面沒法用const。答:你可以用final關鍵字。例如 final int m ...

      四、 關鍵字篇

      Q4.1  java里面怎么定義宏?
      答:java不支持宏,因為宏代換不能保證類型安全。如果你需要定義常量,可以將它定義為某個類的static final成員。參見Q4.2和Q4.6。


      Q4.2  java里面沒法用const。
      答:你可以用final關鍵字。例如 final int m = 9。被聲明為final的變量不能被再次賦值。唯一的例外是所謂blank final,如下例所示:
      public class MyClass1 {
        private final int a = 3;
          private final int b; // blank final

          public MyClass1() {
              a = 5; // 不合法,final變量不能被再次賦值。
              b = 4; // 合法,這是b第一次被賦值。
              b = 6; // 不合法,b不能被再次賦值。
          }
      }
      final也可以用于聲明方法或類,被聲明為final的方法或類不能被繼承。
      注意const是java的保留字以備擴充。

      Q4.3  java里面也不能用goto。
      答:甚至在面向過程的語言中你也可以完全不用goto。請檢查你的程序流程是否合理。如果你需要從多層循環中迅速跳出,java增強了(和C++相比)break和continue的功能,支持label。
      例如:
      outer : 
      while( ... )
      {
          inner :
          for( ... )
          {
                 ...   break inner; ...
                 ... continue outer; ...
          }
      }
      和const一樣,goto也是java的保留字以備擴充。

      Q4.4  java里面能不能重載操作符?
      答:不能。String的+號是唯一一個內置的重載操作符。你可以通過定義接口和方法來實現類似功能。

      Q4.5  我new了一個對象,但是沒法delete掉它。
      答:java有自動內存回收機制,即所謂Garbarge Collection。你不需要刪除對象。你再也不用擔心指針錯誤,內存溢出了。

      Q4.6  我想知道為什么main方法必須被聲明為public static?為什么在main方法中不能調用非static成員?


      答:聲明為public是為了這個方法可以被外部調用,詳情見Q5.4。
      static是為了將某個成員變量/方法關聯到類(class)而非實例(instance)。你不需要創建一個對象就可以直接使用這個類的static成員,因而在static成員中不能調用非static成員,因為后者是關聯到對象實例(instance)的。在A類中調用B類的static成員可以使用B.staticMember的寫法。注意一個類的static成員變量是唯一的,被所有該類對象所共享的,在多線程程序設計
      中尤其要謹慎小心。類的static成員是在類第一次被JRE裝載的時候初始化的。你可以使用如下方法來使用非static成員:
      public class A
      {
          private void someMethod() //非static成員
          {}
          public static void main(String args)
          {
               A a = new A();  //創建一個對象實例
               a.someMethod();  //現在你可以使用非static方法了
          }
      }


      Q4.7  throw和throws有什么不同?


      答:throws用于方法聲明中,聲明一個方法會拋出哪些異常。而throw是在方法體中實際執行拋出異常的動作。如果你在方法中throw一個異常,卻沒有在方法聲明中聲明之,編譯器會報錯。注意Error和RuntimeException的子類是例外,無需特別聲明。

      Q4.8  什么是異常?


      答:異常最早在Ada語言中引入,用于在程序中動態處理錯誤并恢復。你可以在方法中攔截底層異常并處理之,也可以拋給更高層的模塊去處理。你也可以拋出自己的異常指示發生了某些不正常情況。常見的攔截處理代碼如下:
      try
      {
          ......//以下是可能發生異常的代碼
              ...... //異常被你或低層API拋出,執行流程中斷并轉向攔截代碼。
              ...... 
      }
      catch(Exception1 e) //如果Exception1是Exception2的子類并要做特別處理,應排在前面
      {
        //發生Exception1時被該段攔截
      }
      catch(Exception2 e)
      {
        //發生Exception2時被該段攔截
      }
      finally //這是可選的
      {
         //無論異常是否發生,均執行此段代碼
         //即使在catch段中又向外拋出了新的exception,finally段也會得到執行。
      }





      標簽:Java FAQ(4) 

      相關文章

      日韩精品一区二区三区高清