2016年4月13日 星期三

[筆記] 讀《JAVA 技術手冊》之方法的修飾字

修飾字的英文又稱 Modifier,Java 的方法的修飾字有以下幾種:
  • abstract
  • final
  • native
  • public, protected, private
  • static
  • strictfp
  • synchronized
而方法 (method) 是一組連續的程式敘述所組成。方法會有名稱, 可能會有 0 個以上的引數 (argument),可能有回傳值等等。要定義一個方法的 signature 有以下項目:



  • modifiers 表示修飾字,就是接下來要提到的部分。
  • type 表示回傳值型別,若沒有回傳值,則為 void。
  • name 表示方法的名稱。但要注意不同的方法,在名稱定義相同的情況下,不能有相同的參數個數,請參考 Overloading 方法多載。
  • paramlist 參數列,可定義 0 個以上,參數跟參數之間需要用逗號 (,) 隔開。
  • throws 列出方法會拋出的可檢測例外 (unchecke exceptions),若不會拋出例外,則不用寫 throws 的部分; 拋出的例外可以是多個,要用逗號 (,) 隔開。
Modifier 修飾字的定義來自於 java.lang.reflect 底下的 Modifier 類別,Modifier 繼承自 Object。方法的修飾字可以是 0 個以上的關鍵字 (就是以上所列的那些)。
Modifier 可以用在 類別, 方法, 屬性上面,此章大致上是針對方法所描述,因此沒有特別明說 Volatile, transient 這兩個修飾字。
abstract
  • abstract 修飾的方法是沒有實作內容的方法,只需要留下組成方法的主體就可。
  • 一個類別中若有包含 abstract 方法的話,則該類別本身也必須要是 abstract。
  • 且宣告為 abstract 的類別是不能被實體化 (new)的。
final
  • final 修飾字的特性就是一經修飾就不能修改。
  • final 方法在子類別中不可以修改。
  • 假如是類別宣告為 final,其所有的方法也都是 final。
native
  • native 是用在把 Java 跟其他語言寫出來的函式庫作為連接,實作內容不是用 Java 寫的,native 的實作程式碼在 JVM 之外,跟 abstract 很像,主要是定義主體,大括號用一個 ; 代替,實作卻可能是其他語言來實作。
  • 現在幾乎不太會使用到 native。
public, protected, private
  • 存取修飾字,定義該方法是某可以在定義他的類別之外使用。
static
  • 宣告為 static 的方法屬於類別方法 (class method),此方法會跟類別本身有關,而不是跟該類別的實體相關。
  • static 方法只能存取 static 變數
  • static 方法只能直接存取其他 static 方法
  • static 方法沒有 this, 所以不能使用 this 變數
strictfp
  • strictfp,代表 floating point,主要用來解決浮點數運算的問題。因為 Java 會採用執行平台上浮點數硬體方面延展精確度的優點,而 strictfp 可以強制 Java 只能用 32 或 64 位元的浮點數格式執行浮點運算 (<- 但這會使結果較不準確)。
synchronized
  • 此修飾字會讓方法具備執行緒安全,用來防止兩個執行緒同時執行同一個方法。
  • (但好的方法通常會說明該方法是否具有執行緒安全,不應該依賴 synchronized)

讀書筆記參考自: 《JAVA 技術手冊第六版》

1 則留言:

  1. strictfp 很少見,synchronized 很難理解,native 像我家廚房

    lol

    回覆刪除

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...