1. 程式人生 > >java的關鍵字(總結)

java的關鍵字(總結)

其他 重寫方法 同步 描述 cep 兼容 net rac 針對

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的關鍵字(總結)