成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

常用的 Java 關鍵字解讀!

開發 前端
正確識別java語言的關鍵字(keyword)和保留字(reserved word)是十分重要的。Java的關鍵字對java的編譯器有特殊的意義,他們用來表示一種數據類型,或者表示程序的結構等。

一、關鍵字匯總

圖片圖片

二、訪問控制


?表示可以訪問,x表示不能訪問

圖片圖片

2.1、private(私有化)

private 關鍵字是訪問控制修飾符,可以應用于內部類、方法或類的變量字段。只能在聲明 private(內部)類、方法或字段的類中引用這些類、方法或字段。在類的外部或者對于子類而言,它們是不可見的。

2.2、default(缺省)

default:關鍵字是可以應用于類、方法或類的變量字段的訪問控制修飾符。當沒有指定類的訪問權限的時候,虛擬機就會默認的形式給類劃定界限!默認修飾的類無法被其他包的類繼承!

2.3、protected(受保護的)

protected:關鍵字是可以應用于內部類、方法或類的變量字段的訪問控制修飾符。可以在聲明 protected 類、方法或字段的類、同一個包中的其他任何類以及任何子類(無論子類是在哪個包中聲明的)中引用這些類、方法或字段。

2.4、public(公共的)

public:關鍵字是可以應用于類、方法或類的變量字段的訪問控制修飾符。可以在其他任何類或包中引用 public 類、方法或字段。

三、類、接口、方法修飾符

圖片圖片

3.1、class類

class 關鍵字用來聲明新的 Java 類,該類是相關變量和/或方法的集合。類是面向對象的程序設計方法的基本構造單位。要使用類,通常使用 new 操作符將類的對象實例化,然后調用類的方法來訪問類的功能。

3.2、abstract 聲明抽象

abstract關鍵字可以修改類或方法。abstract類可以擴展(增加子類),但不能直接實例化。abstract方法不在聲明它的類中實現,但必須在某個子類中重寫。采用 abstract方法的類本來就是抽象類,并且必須聲明為abstract。

3.3、extends 繼承

extends 關鍵字用在 class 或 interface 聲明中,用于指示所聲明的類或接口是其名稱后跟有 extends 關鍵字的類或接口的子類。子類繼承父類的所有 public 和 protected 變量和方法(但是不包括構造函數)。子類可以重寫父類的任何非 final 方法。一個類只能擴展一個其他類,但一個接口可以繼承多個接口。

3.4、implements實現

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

3.5、interface 接口

interface 關鍵字用來聲明新的 Java 接口,接口是方法的集合。

3.6、final 最終、不可改變

在Java中,final關鍵字可以用來修飾類、方法和變量(包括成員變量和局部變量)。final方法在編譯階段綁定,稱為靜態綁定(static binding)。下面就從這四個方面來了解一下final關鍵字的基本用法。

3.6.1、修飾類

當用final修飾一個類時,表明這個類不能被繼承,不能有子類。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾。final類中的成員變量可以根據需要設為final,但是要注意final類中的所有成員方法都會被隱式地指定為final方法。

3.6.2、修飾方法

下面這段話摘自《Java編程思想》:

使用final方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的Java實現版本中,會將final方法轉為內嵌調用。但是如果方法過于龐大,可能看不到內嵌調用帶來的任何性能提升。在最近的Java版本中,不需要使用final方法進行這些優化了。

因此,如果只有在想明確禁止 該方法在子類中被覆蓋的情況下才將方法設置為final的。

還有就是,類的private方法會隱式地被指定為final方法。

3.6.3、修飾變量

修飾變量是final用得最多的地方。

對于一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。引用變量被final修飾之后,雖然不能再指向其他對象,但是它指向的對象的內容是可變的。

3.6.4、final參數

當函數參數為final類型時,你可以讀取使用該參數,但是無法改變該參數的值或者引用指向。道理同final變量。

3.7、strictfp 嚴格,精準

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

可以將一個類、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構造函數聲明strictfp關鍵字。

3.8、static 靜態

static可以用于修飾屬性,可以修飾代碼塊,也可以用于修飾方法,還可以用于修飾類。

3.8.1、static修飾屬性

無論一個類生成了多少個對象,所有這些對象共同使用唯一一份靜態的成員變量;一個對象對該靜態成員變量進行了修改,其他對象的該靜態成員變量的值也會隨之發生變化。如果一個成員變量是static的,那么我們可以通過‘類名.成員變量名’的方式來使用它。

3.8.2、static修飾方法

static修飾的方法叫做靜態方法。對于靜態方法來說,可以使用‘類名.方法名’的方式來訪問。靜態方法只能繼承,不能重寫(Override),因為重寫是用于表現多態的,重寫只能適用于實例方法,而靜態方法是可以不生成實例直接用類名來調用,這就會與重寫的定義所沖突,與多態所沖突,所以靜態方法不能重寫,只能是隱藏。

static方法與非static方法:不能在靜態方法中訪問非靜態成員變量;可以在靜態方法中訪問靜態的成員變量。可以在非靜態方法中訪問靜態的成員變量:因為靜態方法可以直接用類名來調用,而非靜態成員變量是在創建對象實例時才為變量分配內存和初始化變量值。

不能在靜態方法中使用this關鍵字:因為靜態方法可以直接用類名來調用,而this實際上是創建實例時,實例對應的一個應用,所以不能在靜態方法上使用this。

3.8.3、static修飾代碼塊

靜態代碼塊。靜態代碼塊的作用也是完成一些初始化工作。首先執行靜態代碼塊,然后執行構造方法。靜態代碼塊在類被加載的時候執行,而構造方法是在生成對象的時候執行;要想調用某個類來生成對象,首先需要將類加載到Java虛擬機上(JVM),然后由JVM加載這個類來生成對象。

類的靜態代碼塊只會執行一次,是在類被加載的時候執行的,因為每個類只會被加載一次,所以靜態代碼塊也只會被執行一次;而構造方法則不然,每次生成一個對象的時候都會調用類的構造方法,所以new一次就會調用構造方法一次。如果繼承體系中既有構造方法,又有靜態代碼塊,那么首先執行最頂層的類的靜態代碼塊,一直執行到最底層類的靜態代碼塊,然后再去執行最頂層類的構造方法,一直執行到最底層類的構造方法。注意:靜態代碼塊只會執行一次。

3.8.4、static修飾類

這個有點特殊,首先,static是可以用來修飾類的,但是static是不允許用來修飾普通類,只能用來修飾內部類,被static所修飾的內部類可以用new關鍵字來直接創建一個實例,不需要先創建外部類實例。static內部類可以被其他類實例化和引用(即使它是頂級類)。

其實理解起來也簡單。因為static主要是修飾類里面的成員,包括內部類、屬性、方法這些。修飾這些變量的目的也很單純,那就是暗示這個成員在該類之中是唯一的一份拷貝,即便是不斷的實例化該類,所有的這個類的對象都會共享這些static成員。這樣就好辦了。因為是共享的、唯一的,所以,也就不需要在實例化這個類以后再通過這個類來調用這個成員了,顯然有點麻煩,所以就簡單一點,直接通過類名直接調用static成員,更加直接。然而這樣設置之后,就出現了一個限制,就是,static方法之中不能訪問非static屬性,因為這個時候非static屬性可能還沒有給他分配內存,該類還沒有實例化。

所以,通常,static 關鍵字意味著應用它的實體在聲明該實體的類的任何特定實例外部可用。

可以從類的外部調用 static 方法,而不用首先實例化該類。這樣的引用始終包括類名作為方法調用的限定符。

3.9、synchronized線程、同步

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

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

3.10、transient 短暫

transient 關鍵字可以應用于類的成員變量,以便指出該成員變量不應在包含它的類實例已序列化時被序列化。

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

3.11、volatile 易失

volatile 關鍵字用于表示可以被多個線程異步修改的成員變量。

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

3.12、native 本地

native 關鍵字可以應用于方法,以指示該方法是用Java以外的語言實現的,方法對應的實現不是在當前文件,而是在用其他語言(如C和C++)實現的文件中。。

Java不是完美的,Java的不足除了體現在運行速度上要比傳統的C++慢許多之外,Java無法直接訪問到操作系統底層(如系統硬件等),為此Java使用native方法來擴展Java程序的功能。

3.13、enum 枚舉

枚舉類型(Enumerated Type) 很早就出現在編程語言中,它被用來將一組類似的值包含到一種類型當中。而這種枚舉類型的名稱則會被定義成獨一無二的類型描述符,在這一點上和常量的定義相似。不過相比較常量類型,枚舉類型可以為申明的變量提供更大的取值范圍。

四、程序控制

4.1、流程判斷

if(布爾值) {
    ...
} else {
    ...
}

4.2、for循環

for (int i = 0; i < 10; i++) {
    ...
}

4.3、fore循環

for (數據類型 變量值 : 數組) {
    ...
}

4.4、while循環

while (布爾值) {
    ...
}

4.5、do...while循環

do {
    ...
} while (布爾值);

4.6、switch選擇

switch(變量){
    case 值1 :
       //語句
       break; //可選
    case 值2 :
       //語句
       break; //可選
    //你可以有任意數量的case語句
    default : //可選
       //語句
}

4.7、instanceof對象類型判斷

result = 需要判斷的對象 instanceof 已知對象
result為布爾值

4.8、continue關鍵字

continue:表示跳過當前程序,繼續下一個,一般用于循環語句

for (int i = 0; i < 10; i++) {
    if(i == 6){
        //如果i等于6 ,就跳過,進行下一次循環
        continue;
    }
}

4.9、break關鍵字

break:表示跳過當前程序,結束,一般用于循環語句

for (int i = 0; i < 10; i++) {
    if(i == 6){
        //如果i等于6 ,就跳過,結束循環語句
        continue;
    }
}

4.10、return關鍵字

return:結束當前流程,返回結果!

return null;

4.11、assert關鍵字

assert:斷言是為了方便調試程序,并不是發布程序的組成部分。理解這一點是很關鍵的,后面會單獨介紹!

斷言是通過關鍵字assert來定義的,一般的,它有兩種形式。

// 例如:assert <bool expression>;
boolean isStudent = false; assert isStudent;
// 例如:assert <bool expression> : <message>;
boolean isSafe = false;  assert isSafe : "Not Safe at all";

五、錯誤處理

5.1、異常捕捉

try {
    ...
} catch (Exception e) {
    //異常
} finally {
    //異常最終執行語句
}

5.2、異常拋出

throw new Exception();

對應的方法需要聲明跑出異常

throws Exception

例如:

public static void main(String[] args) throws Exception {
    try {
        System.out.println("hello world");
    } catch (Exception e) {
        throw new Exception();
    } finally {
        System.out.println("異常結束");
    }
}

六、基本數據類型

圖片圖片

七、變量引用

圖片圖片

八、包相關

8.1、import 引入

import 關鍵字使一個包中的一個或所有類在當前 Java 源文件中可見。可以不使用完全限定的類名來引用導入的類。

當多個包包含同名的類時,許多 Java 程序員只使用特定的 import 語句(沒有“*”)來避免不確定性。

8.2、package 包

package 關鍵字指定在 Java 源文件中聲明的類所駐留的 Java 包。

package 語句(如果出現)必須是 Java 源文件中的第一個非注釋性文本。例:java.lang.Object。如果 Java 源文件不包含 package 語句,在該文件中定義的類將位于“默認包”中。請注意,不能從非默認包中的類引用默認包中的類。

九、保留字

正確識別java語言的關鍵字(keyword)和保留字(reserved word)是十分重要的。Java的關鍵字對java的編譯器有特殊的意義,他們用來表示一種數據類型,或者表示程序的結構等。保留字是為java預留的關鍵字,他們雖然現在沒有作為關鍵字,但在以后的升級版本中有可能作為關鍵字。識別java語言的關鍵字,不要和其他語言如c/c++的關鍵字混淆。const和goto是java的保留字。所有的關鍵字都是小寫。

9.1、goto 跳轉

goto 保留關鍵字,但無任何作用。結構化程序設計完全不需要 goto 語句即可完成各種流程,而 goto 語句的使用往往會使程序的可讀性降低,所以 Java 不允許 goto 跳轉。

9.2、const 靜態

const 保留字,是一個類型修飾符,使用const聲明的對象不能更新。與final某些類似。

十、總結

以上內容,只是簡單的介紹一下java所有的關鍵字。

其實每個關鍵字都有很深的含義和應用場景,而且每個java的版本,一些關鍵字的應用可能還會有些變動,比如 jdk1.8 接口里面的方法可以用 default 修飾,實現接口的類,不必顯式的進行重寫改方法,

責任編輯:武曉燕 來源: 潘志的技術筆記
相關推薦

2012-03-01 12:50:03

Java

2020-08-10 08:00:13

JavaFinal關鍵字

2012-06-02 00:53:39

Javafinally

2019-09-04 14:14:52

Java編程數據

2024-11-20 15:55:57

線程Java開發

2022-02-17 08:31:38

C語言staic關鍵字

2022-05-06 08:32:40

Pythonwith代碼

2021-02-01 13:10:07

Staticc語言UNIX系統

2024-03-15 15:12:27

關鍵字底層代碼

2022-11-12 18:32:50

Golangomitemptyjson

2025-03-12 10:55:30

2025-01-24 14:57:24

2021-03-10 15:59:39

JavaSynchronize并發編程

2009-06-29 12:58:47

This關鍵字java

2025-06-13 08:00:00

Java并發編程volatile

2009-09-17 09:30:00

Linq LET關鍵字

2022-01-04 16:35:42

C++Protected關鍵字

2009-09-02 09:24:03

C# this關鍵字

2009-08-21 14:58:56

C# this關鍵字

2013-01-30 10:12:14

Pythonyield
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区高清 | 免费能直接在线观看黄的视频 | 日韩欧美中文字幕在线视频 | 欧美bondage紧缚视频 | 3级毛片 | 在线视频一区二区 | 最新国产精品精品视频 | 91精品在线播放 | 自拍偷拍小视频 | 91文字幕巨乱亚洲香蕉 | 欧美一级黄色片免费观看 | 精精国产xxxx视频在线野外 | 成人在线视频网站 | 黄色片在线看 | 日本超碰| 免费黄篇| 欧洲精品视频一区 | 免费视频一区二区 | 中文字幕精品一区久久久久 | 一区二区三区四区不卡 | 亚洲欧洲在线视频 | 精品国产一区二区三区性色av | 在线免费观看毛片 | 国产精品成人在线观看 | 国产成人综合一区二区三区 | 蜜臀av日日欢夜夜爽一区 | 影音先锋中文字幕在线观看 | 国产在线观看av | 日韩成人影院在线观看 | www..com18午夜观看 | 隔壁老王国产在线精品 | 亚洲国产高清免费 | 日韩一二三区视频 | 国产免费一区二区三区最新6 | 久久99国产精一区二区三区 | 久久国产区 | 精品国产乱码一区二区三 | 成人毛片一区二区三区 | 国产一级电影在线 | 免费成人在线网站 | a视频在线观看 |