java的關鍵字(總結)

來源:互聯網
上載者:User

標籤:nat   常量   訊息   範圍   efault   大括弧   volatile   功能   div   

1.Java 關鍵字有哪些(參考網址:1.https://www.cnblogs.com/chenglc/p/6922834.html

2.https://zhidao.baidu.com/question/89449594.html)

1.1)存取控制:private(私人的)、protected(受保護的)、public(公用的)、default(有時候也稱為friendly,它是針對本包訪問而設計的,任何處於本包下的類、介面、異常等,都可以相互訪問,即使是父類沒有用protected修飾的成員也可以)

下面用比較直白的話來描述:

在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes,認為都是自己的朋友。

     1、public:public表明該資料成員、成員函數是對所有使用者開放的,所有使用者都可以直接進行調用;

     2、private:private表示私人,私人的意思就是除了class自己之外,任何人都不可以直接使用,私人財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。

     3、protected:protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。

 

                範圍       當前類    同一package   子孫類     其他package

 

                public        √         √                      √           √

 

               protected   √          √                     √           ×

 

               friendly       √          √                     ×           ×

 

               private        √          ×                    ×           ×

 

    註:不寫時預設為friendly

1.2)類,方法和變數修飾符

1.2.1) abstract 聲明抽象

abstract關鍵字可以修改類或方法。修飾類,會使這個類成為一個抽象類別,這個類將不能產生對象執行個體,可以做為物件變數聲明的類型,也就是編譯時間類型,抽象類別就像當於一類的半成品,需要子類繼承並覆蓋其中的抽象方法。abstract修飾方法,會使這個方法變成抽象方法,聲明(定義)而沒有實現,需要子類繼承實現(覆蓋)。abstract修飾方法就是要求其子類覆蓋(實現)這個方法。調用時可以以多態方式調用子類覆蓋(實現)後的方法,也就是說抽象方法必須在其子類中實現,除非子類本身也是抽象類別。abstract修飾符在修飾類時必須放在類名前。採用 abstract方法的類本來就是抽象類別,並且必須聲明為abstract。

 

1.2.2) class類

class 關鍵字用來聲明新的 Java 類,該類是相關變數和/或方法的集合。類是物件導向的程式設計方法的基本構造單位。類通常代表某種實際實體,如幾何形狀或人。類是對象的模板。每個對象都是類的一個執行個體。要使用類,通常使用 new 操作符將類的對象執行個體化,然後調用類的方法來訪問類的功能。

 

1.2.3) extends 繼承、擴充

extends 是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承,JAVA中不支援多重繼承,但是可以用介面來實現,這樣就要用到implements,繼承只能繼承一個類,但implements可以實現多個介面,用逗號分開就行了。extends 關鍵字用在 class 或 interface 聲明中,用於指示所聲明的類或介面是其名稱後跟有 extends 關鍵字的類或介面的子類。子類繼承父類的有 public 和 protected 變數和方法。 子類可以重寫父類的任何非 final 方法。一個類只能擴充一個其他類。

 

1.2.4) final 最終、不可改變

final 關鍵字可以應用於類,但final修飾的類不能被繼承。final 關鍵字可以應用於方法,以指示在子類中不能重寫此方法。一個類不能同時是 abstract 又是 final。abstract 意味著必須擴充類,final 意味著不能擴充類。一個方法不能同時是 abstract 又是 final。abstract 意味著必須重寫方法,final 意味著不能重寫方法。final還可以修飾變數,被final修飾的變數就是一個常量,只能賦值一次

 

1.2.5) implements實現

implements 關鍵字在 class 聲明中使用,以指示所聲明的類提供了在 implements 關鍵字後面的名稱所指定的介面中所聲明的所有方法的實現。類必須提供在介面中所聲明的所有方法的實現。一個類可以實現多個介面。

 

1.2.6) interface 介面

interface 關鍵字用來聲明新的 Java 介面,介面是方法的集合。介面是 Java 語言的一項強大功能。任何類都可聲明它實現一個或多個介面,這意味著它實現了在這些介面中所定義的所有方法。 實現了介面的任何類都必須提供在該介面中的所有方法的實現。一個類可以實現多個介面。

 

1.2.7) native 本地

native 關鍵字可以應用於方法,以指示該方法是用 Java 以外的語言實現的。

 

1.2.8) new 新建立

new 關鍵字用於建立類的新執行個體。 

new 關鍵字後面的參數必須是類名,並且類名的後面必須是一組構造方法參數(必須帶括弧)。 參數集合必須與類的構造方法的簽名匹配。 

= 左側的變數的類型必須與要執行個體化的類或介面具有賦值相容關係。

 

1.2.9) static 靜態(參考網址:https://www.cnblogs.com/dolphin0520/p/3799052.html)

 

1.2.10) strictfp 嚴格,精準

strictfp的意思是FP-strict,也就是說精確浮點的意思。在Java虛擬機器進行浮點運算時,如果沒有指定strictfp關鍵字時,Java的編譯器以及運行環境在對浮點運算的運算式是採取一種近似於我行我素的行為來完成這些操作,以致於得到的結果往往無法令人滿意。而一旦使用了strictfp來聲明一個類、介面或者方法時,那麼所聲明的範圍內Java的編譯器以及運行環境會完全依照浮點規範IEEE-754來執行。因此如果想讓浮點運算更加精確,而且不會因為不同的硬體平台所執行的結果不一致的話,那就請用關鍵字strictfp。

可以將一個類、介面以及方法聲明為strictfp,但是不允許對介面中的方法以及建構函式聲明strictfp關鍵字

 

1.2.11) synchronized線程、同步(參考網址:http://www.importnew.com/21866.html)

synchronized 關鍵字可以應用於方法或語句塊,並為一次只應由一個線程執行的關鍵程式碼片段提供保護。 

synchronized 關鍵字可防止代碼的關鍵程式碼片段一次被多個線程執行。 

如果應用於靜態方法,那麼,當該方法一次由一個線程執行時,整個類將被鎖定。 

如果應用於執行個體方法,那麼,當該方法一次由一個線程訪問時,該執行個體將被鎖定。 

如果應用於對象或數組,當關聯的代碼塊一次由一個線程執行時,對象或數組將被鎖定。

synchronized是Java中的關鍵字,是一種同步鎖。它修飾的對象有以下幾種:

1. 修飾一個代碼塊,被修飾的代碼塊稱為同步語句塊,其作用的範圍是大括弧{}括起來的代碼,作用的對象是調用這個代碼塊的對象;

2. 修飾一個方法,被修飾的方法稱為同步方法,其作用的範圍是整個方法,作用的對象是調用這個方法的對象;

3. 修改一個靜態方法,其作用的範圍是整個靜態方法,作用的對象是這個類的所有對象;

4. 修改一個類,其作用的範圍是synchronized後面括弧括起來的部分,作用主的對象是這個類的所有對象。

 

1.2.12) transient 短暫

transient 關鍵字可以應用於類的成員變數,以便指出該成員變數不應在包含它的類執行個體已序列化時被序列化。

當一個對象被序列化的時候,transient型變數的值不包括在序列化的表示中,然而非transient型的變數是被包括進去的。

Java的serialization提供了一種持久化對象執行個體的機制。當持久化對象時,可能有一個特殊的對象資料成員,我們不想用serialization機制來儲存它。為了在一個特定對象的一個域上關閉serialization,可以在這個域前加上關鍵字transient。

     transient是Java語言的關鍵字,用來表示一個域不是該對象序列化的一部分。當一個對象被序列化的時候,transient型變數的值不包括在序列化的表示中,然而非transient型的變數是被包括進去的。

1.2.13) volatile 易失

volatile 關鍵字用於表示可以被多個線程非同步修改的成員變數。 

注意:volatile 關鍵字在許多 Java 虛擬機器中都沒有實現。 volatile 的目標用途是為了確保所有線程所看到的指定變數的值都是相同的。

Java 語言中的 volatile 變數可以被看作是一種 “程度較輕的 synchronized”;與 synchronized 塊相比,volatile 變數所需的編碼較少,並且運行時開銷也較少,但是它所能實現的功能也僅是 synchronized 的一部分。

1.2)程式控制語句:略

1.3)錯誤處理

1.3.1) try 捕獲異常

try 關鍵字用於包含可能引發異常的語句塊。 

每個 try 塊都必須至少有一個 catch 或 finally 子句。如果某個特定異常類未被任何 catch 子句處理,該異常將沿著調用棧遞迴地傳播到下一個封閉 try 塊。如果任何封閉 try 塊都未捕獲到異常,Java 解譯器將退出,並顯示錯誤訊息和堆疊追蹤資訊。 

1.3.2) catch 處理異常

catch 關鍵字用來在 try-catch 或 try-catch-finally 語句中定義異常處理塊。 

開始和結束標記 { 和 } 是 catch 子句文法的一部分,即使該子句只包含一個語句,也不能省略這兩個標記。 

每個 try 塊都必須至少有一個 catch 或 finally 子句。 

如果某個特定異常類未被任何 catch 子句處理,該異常將沿著調用棧遞迴地傳播到下一個封閉 try 塊。如果任何封閉 try 塊都未捕獲到異常,Java 解譯器將退出,並顯示錯誤訊息和堆疊追蹤資訊。 

1.3.3) throw 拋出一個異常對象

throw 關鍵字用於引發異常。 

throw 語句將 java.lang.Throwable 作為參數。Throwable 在調用棧中向上傳播,直到被適當的 catch 塊捕獲。 

引發非 RuntimeException 異常的任何方法還必須在方法聲明中使用 throws 修飾符來聲明它引發的異常。

 

1.3.4) throws 聲明一個異常可能被拋出

throws 關鍵字可以應用於方法,以便指出方法引發了特定類型的異常。 

throws 關鍵字將逗號分隔的 java.lang.Throwables 列表作為參數。 

引發非 RuntimeException 異常的任何方法還必須在方法聲明中使用 throws 修飾符來聲明它引發的異常。 

要在 try-catch 塊中包含帶 throws 子句的方法的調用,必須提供該方法的調用者。

 

java的關鍵字(總結)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.