java 關鍵字

1、default關鍵字html

default關鍵字,並非訪問修飾符中的default(默認的訪問權限,不加public、private、protected訪問修飾符的狀況自動使用,同一包下的類能夠訪問字段),而是Java8的新特性,default關鍵字是不能修飾字段的。java

Java8之前的認知,Java的接口中的方法只能定義不能有方法體,方法體是由實現類去實現的。可是若是當咱們要去擴展接口時,全部接口實現類都須要去實現這個方法,這在某些業務場景中會很是不方便。因此,Java8中引入了default方法,也叫做Defender方法。經過在方法前加上default關鍵字,使接口方法有了默認的實現。算法

example:數據庫

帶有通常方法與默認方法的接口:編程

 

[java]  view plain  copy
 
  1. public interface TestDefault {  
  2.     public void normalMethod();  
  3.       
  4.     default public void defaultMethod(){  
  5.         System.out.println("Default method!");  
  6.     }  
  7. }  

測試類,只實現了接口中的通常方法:安全

 

[java]  view plain  copy
 
  1. public class Main implements TestDefault{  
  2.   
  3.     @Override  
  4.     public void normalMethod() {  
  5.         System.out.println("Normal method!");  
  6.     }  
  7.       
  8.     public static void main(String[] args){  
  9.         Main main = new Main();  
  10.         main.normalMethod();  
  11.         main.defaultMethod();  
  12.     }  
  13. }  

可是使用default方法有一個很關鍵的問題,在當一個類實現兩個及以上接口時,存在兩個同名的default方法時,這時調用會有衝突,編譯器不知道要調用哪一個default方法,這一點要注意!

併發

2、native關鍵字編程語言

native關鍵字用來修飾方法,且此方法聲明時不能有方法體。native代表這個方法是使用其餘語言如C/C++實現的,並生成了.dll文件,JVM經過JNI技術與.dll交互完成native功能(Java也是經過JNI技術與底層操做系統交互的)。ide

經過native,可使用Java不方便實現的東西,如高效的訪問操做系統,用其餘編程語言實現。學習

使用native時也有一點須要注意,native能夠與其餘Java標識符連用,可是不能與abstract連用,由於使用native方法時就說明它有其餘語言的實現,而abstract卻顯式指明瞭方法是無實現體的。

更多的關於native與JNI知識可參看博客:http://blog.csdn.net/xw13106209/article/details/6989415

3、transient關鍵字

transient是變量修飾符,只能修飾變量,被修飾的變量在對象持久化時,該值不會被保存。

提及transient就必須先說Java的serialization機制,這種機制提供了將Java的對象型數據存儲到關係型或其餘類型數據庫或硬盤中(也就是持久化)。須要持久化的對象的類定義時須要實現Serializable接口。可是隻實現Serializable接口會致使全部變量,有用的沒用地都會被持久化,這樣可能會影響效率與安全性,因此就須要transient控制。

 

4、const與goto關鍵字

呵呵,放鬆一下,只是Java的保留字,暫時沒有用到哦。

 

5、strictfp關鍵字

strictfp 關鍵字表示精確浮點,可應用於類、接口或方法。使用 strictfp 關鍵字聲明一個方法時,該方法中全部的float和double表達式都嚴格遵照FP-strict的限制,符合IEEE-754規範。當對一個類或接口使用 strictfp 關鍵字時,該類中的全部代碼,包括嵌套類型中的初始設定值和代碼,都將嚴格地進行計算。嚴格約束意味着全部表達式的結果都必須是 IEEE 754 算法對操做數預期的結果,以單精度和雙精度格式表示。 

若是你想讓你的浮點運算更加精確,並且不會由於不一樣的硬件平臺所執行的結果不一致的話,能夠用關鍵字strictfp。

 

6、volatile關鍵字

volatile關鍵字用來修飾類成員變量,這個變量每次被線程訪問時都會強迫從共享內存中重讀變量值,並且,當該變量值發生改變時,JVM會強迫線程將變化值寫到共享內存中。經過volatile就保證了不一樣線程同一時刻老是看到的是同一個值,保證了併發數據安全。

須要特地用volatile實現這樣功能的緣由是,Java語言規範了:爲了得到最佳速度,容許線程保存共享成員屬性的私有拷貝,並且只有當線程進入或離開同步代碼塊時才與共享成員變量的原始值對比。

須要注意的是,volatile應使用在多個線程訪問一個成員變量的狀況,但當該變量已經在synchronized代碼塊中或者它是常量的狀況就不需使用volatile了。volatile保證併發數據安全的同時須要付出效率的代價,因此必定要在須要時才使用這個關鍵字。

這個關鍵字其實並不容易忽視,只要你深刻地學習Java,這個關鍵字沒法繞開。要想用好volatile關鍵詞,須要瞭解到計算機內存模型、Java內存模型、併發編程概念等知識,經過學習這個關鍵字能夠學習到不少有意義有意思的知識,能夠參看海子的博客,我很是很是喜歡他寫的客,

http://www.cnblogs.com/dolphin0520/p/3920373.html

相關文章
相關標籤/搜索