Java中共有52個關鍵字,其中有兩個保留字,雖然查到百度百科上說是50個,可是事實確實是有52個(47+3+2)。java
Java語言的的保留字是指在Java中商務預留的關鍵字node
其餘計算機語言中的含義:用於修改字段或局部變量的聲明,它指定字段或局部變量的值是常數,不能被修改 git
其餘計算機語言中的含義:指定跳轉到標籤,找到標籤後,程序將處理從下一行開始的命令。程序員
private關鍵字是訪問控制修飾符,能夠應用於類、方法或字段(在類中聲明的變量)。數組
-示例-異步
public class MyPublicClass{ide
private class MyPrivateClass{oop
}this
private int i;編碼
private String myMethod(){
}
}
-注意點-
1. 只能在聲明private(內部)類、方法或字段的類中引用這些類、方法或字段。在類的外部或者對於子類而言,它們是不可見的。
2. 全部類成員的默認訪問範圍都是package訪問,也就是說,除非存在特定的訪問控制修飾符,不然,能夠從同一個包中的任何類訪問類成員。
protected關鍵字是能夠應用於類、方法或字段(在類中聲明的變量)的訪問控制修飾符。
-示例-
public class MyPublicClass{
protected class MyPrivateClass{
}
protected int i;
protected StringmyMethod(){
}
}
-注意點-
1.能夠在聲明protected類、方法或字段的類、同一個包中的其餘任何類以及任何子類(不管子類是在哪一個包中聲明的)中引用這些類、方法或字段。
2.全部類成員的默認訪問範圍都是package訪問,也就是說,除非存在特定的訪問控制修飾符,不然,能夠從同一個包中的任何類訪問類成員。
public關鍵字是能夠應用於類、方法或字段(在類中聲明的變量)的訪問控制修飾符。
-示例-
public class MyPublicClass{
public class MyPrivateClass{
}
publicinti;
public String myMethod(){
}
}
-注意點-
1. 可能只會在其餘任何類或包中引用public類、方法或字段。
2. 全部類成員的默認訪問範圍都是package訪問,也就是說,除非存在特定的訪問控制修飾符,不然,能夠從同一個包中的任何類訪問類成員。
abstract關鍵字能夠修飾類或方法。
abstract類能夠擴展(增長子類),但不能直接實例化。
abstract方法不在聲明它的類中實現,但必須在某個子類中重寫。
-示例-
public abstract class MyClass{}
public abstract String myMethod();
-注意點-
7.final類的方法都不能是abstract,由於final類不能有子類。
class關鍵字用來聲明新的Java類,該類是相關變量和/或方法的集合。
類是面向對象的程序設計方法的基本構造單位。類一般表明某種實際實體,如幾何形狀或人。類是對象的模板。每一個對象都是類的一個實例。
要使用類,一般使用new操做符將類的對象實例化,而後調用類的方法來訪問類的功能。
-示例-
public class Rectangle{
float width;
float height;
public Rectangle(floatw,floath){
width=w;
height=h;
}
public float getWidth(){
returnwidth;
}
public float getHeight(){
return height;
}
}
extends關鍵字用在class或interface聲明中,用於指示所聲明的類或接口是其名稱後跟有extends關鍵字的類或接口的子類。
-示例-
public class Rectangle extends Polygon{
}
-注意點-
1. 在上例中,Rectangle類繼承Polygon類的全部public和protected變量和方法。
2. Rectangle類能夠重寫Polygon類的任何非final方法。
一個類只能擴展一個其餘類。
final關鍵字能夠應用於類,以指示不能擴展該類(不能有子類)。
final關鍵字能夠應用於方法,以指示不能重寫任何子類中的方法。
-示例-
public final class MyFinalClass{
}
public class MyClass{
public final String myFinal Method(){
}
}
-注意點-
1. 一個類不能同時是abstract又是final。abstract意味着必須擴展類,final意味着不能擴展類。
2. 一個方法不能同時是abstract又是final。abstract意味着必須重寫方法,final意味着不能重寫方法。
implements關鍵字在class聲明中使用,以指示所聲明的類提供了在implements關鍵字後面的名稱所指定的接口中所聲明的全部方法的實現。
-示例-
public class Truck implements IVehicle{
}
-注意點-
1. 在上例中,Truck類必須提供在IVehicle接口中所聲明的全部方法的實現。
2. 不然,Truck類將是獨立的;它能夠聲明其餘方法和變量,並擴展另外一個類。
3. 一個類能夠實現多個接口。
interface關鍵字用來聲明新的Java接口,接口是方法的集合。
接口是Java語言的一項強大功能。任何類均可聲明它實現一個或多個接口,這意味着它實現了在這些接口中所定義的全部方法。
-示例-
public interface IPolygon{
public float getArea();
public int getNumberOfSides();
public int getCircumference();
}
-注意點-
1. 實現了接口的任何類都必須提供在該接口中的全部方法的實現。
2. 一個類能夠實現多個接口。
native關鍵字能夠應用於方法,以指示該方法是用Java之外的語言實現的。
-示例-
native String getProcessorType();
-注意點-
1. Native方法不在此文檔的討論範圍內。
new關鍵字用於建立類的新實例。
-示例-
String sName=new String();
Float fVal=new Float(0.15);
-注意點-
1. new關鍵字後面的參數必須是類名,而且類名的後面必須是一組構造方法參數(必須帶括號)。
2. 參數集合必須與類的構造方法的簽名匹配。
3. =左側的變量的類型必須與要實例化的類或接口具備賦值兼容關係。
static關鍵字能夠應用於內部類(在另外一個類中定義的類)、方法或字段(類的成員變量)。
-示例-
public class MyPublicClass{
public final static int MAX_OBJECTS=100;
static int_numObjects=0;
static class MyStaticClass{
}
static int getNumObjects(){
}
}
-注意點-
1. 一般,static關鍵字意味着應用它的實體在聲明該實體的類的任何特定實例外部可用。
2. static(內部)類能夠被其餘類實例化和引用(即便它是頂級類)。在上面的-示例-中,另外一個類中的代碼能夠實例化MyStaticClass類,方法是用包含它的類名來限定其名稱,如MyClass.MyStaticClass。
3. static字段(類的成員變量)在類的全部實例中只存在一次。
能夠從類的外部調用static方法,而不用首先實例化該類。這樣的引用始終包括類名做爲方法調用的限定符。在上面的示例中,MyClass類外部的代碼以MyClass.getNumObjects()的形式調用getNumObjects()static方法。
4. 模式:public final static<type> varName = <value>;
5. 一般用於聲明能夠在類的外部使用的類常量。在引用這樣的類常量時須要用類名加以限定。在上面的-示例-中,另外一個類能夠用MyClass.MAX_OBJECTS形式來引用MAX_OBJECTS常量。
synchronized關鍵字能夠應用於方法或語句塊,併爲一次只應由一個線程執行的關鍵代碼段提供保護。
-示例-
public class MyClass{
public synchronized static String mySyncStaticMethod(){
}
public synchronized String mySyncMethod(){
}
}
public class MyOtherClass{
Object someObj;
public String myMethod(){
synchronized(someObj){
}
}
}
-注意點-
1. synchronized關鍵字可防止代碼的關鍵代碼段一次被多個線程執行。
2. 若是應用於靜態方法(如上例中的MySyncStaticMethod),那麼,當該方法一次由一個線程執行時,整個類將被鎖定。
3. 若是應用於實例方法(如上例中的MySyncMethod),那麼,當該方法一次由一個線程訪問時,該實例將被鎖定。
4. 若是應用於對象或數組,當關聯的代碼塊一次由一個線程執行時,對象或數組將被鎖定。
transient關鍵字能夠應用於類的成員變量,以便指出該成員變量不該在包含它的類實例已序列化時被序列化。
-示例-
public class MyClass{
private transient String password;
}
volatile關鍵字用於表示能夠被多個線程異步修改的成員變量。
-示例-
public class MyClass{
volatile int shared Value;
}
-注意點-
2. volatile關鍵字在許多Java虛擬機中都沒有實現
用於提早退出for、while或do循環,或者在switch語句中用來結束case塊。
-示例-
for(i=0;i<max;i++){
if(<loopfinishedearly>){
break;
}
}
int type=5;
switch(type){
case1:System.out.print(1);
break;
case2:System.out.print(2);
break;
default:
}
-注意點-
1. break老是退出最深層的while、for、do或switch語句。
continue關鍵字用來跳轉到for、while或do循環的下一個迭代。
-示例-
for(i=0;i<max;i++){
if(<done with this iteration>){
continue;
}
}
-注意點-
1. continue老是跳到最深層while、for或do語句的下一個迭代。
return關鍵字會致使方法返回到調用它的方法,從而傳遞與返回方法的返回類型匹配的值。
-示例-
public void myVoidMethod(){
return;
}
public String myStringMethod(){
Strings="myresponse";
returns;
}
public int myIntMethod(){
inti=5;
return(i);
}
-注意點-
1. 若是方法具備非void的返回類型,return語句必須具備相同或兼容類型的參數。
2. 返回值兩側的括號是可選的。
do關鍵字用於指定一個在每次迭代結束時檢查其條件的循環。
-示例-
do{
}
while(!found);
-注意點-
do循環體至少執行一次。
條件表達式後面必須有分號。
while關鍵字用於指定一個只要條件爲真就會重複的循環。
-示例-
while(!found){
<statements>
}
if關鍵字指示有條件地執行代碼塊。條件的計算結果必須是布爾值。
-示例-
if(condition){
}
else{
}
}
-注意點-
1. if語句能夠有可選的else子句,該子句包含條件爲false時將執行的代碼。
2. 包含boolean操做數的表達式只能包含boolean操做數。
else關鍵字老是在if-else語句中與if關鍵字結合使用。else子句是可選的,若是if條件爲false,則執行該子句。
-示例-
if(condition){
}
else{
}
for關鍵字用於指定一個在每次迭代結束前檢查其條件的循環。
-示例-
inti;
for(i=0;i<max;i++){
}
-注意點-
1. for語句的形式爲for(initialize;condition;increment)
2. 控件流進入for語句時,將執行一次initialize語句。
3. 每次執行循環體以前將計算condition的結果。若是condition爲true,則執行循環體。
4. 每次執行循環體以後,在計算下一個迭代的condition以前,將執行increment語句。
instanceof關鍵字用來肯定對象所屬的類。
-示例-
if(node instanceof TreeNode){
}
-注意點-
1. 在上例中,若是node是TreeNode類的實例,或者是TreeNode的子類的實例,則instanceof表達式的值將爲true。
switch語句用於基於某個表達式選擇執行多個代碼塊中的某一個。
-示例-
char arg=‘Y’;
switch(arg){
case'y':
case'Y':
break;
case'n':
case'N':
break;
default:
break;
}
-注意點-
1. switch條件的計算結果必須等於byte、char、short或int,jdk1.7後能夠是String類型。
2. case塊沒有隱式結束點。break語句一般在每一個case塊末尾使用,用於退出switch語句。
若是沒有break語句,執行流將進入全部後面的case和/或default塊。
用來標記switch語句中的每一個分支。
-示例-
for(i=0;i<max;i++){
if(<loopfinishedearly>){
break;
}
}
int type=5;
switch(type){
case1:System.out.print(1);
break;
case2:System.out.print(2);
break;
default:
}
-注意點-
1. case塊沒有隱式結束點。break語句一般在每一個case塊末尾使用,用於退出switch語句。
2.若是沒有break語句,執行流將進入全部後面的case和/或default塊。
default關鍵字用來標記switch語句中的默認分支。
-示例-
for(i=0;i<max;i++){
if(<loopfinishedearly>){
break;
}
}
int type=5;
switch(type){
case1:System.out.print(1);
break;
case2:System.out.print(2);
break;
default:
}
-注意點-
1. default塊沒有隱式結束點。break語句一般在每一個case或default塊的末尾使用,以便在完成塊時退出switch語句。
2.若是沒有default語句,其參數與任何case塊都不匹配的switch語句將不執行任何操做。
try關鍵字用於包含可能引起異常的語句塊。
-示例-
try{
<可能引起異常的塊>
}
catch(<java.lang.Exception或子類>e){
<處理異常e的代碼>
}
try{
<可能引起其餘異常的塊>
}
catch(FooExceptione){
<處理FooExceptione的代碼>
}
catch(BarExceptione){
<處理BarExceptione的代碼>
}
try{
<可能引起異常的塊>
}
catch(<java.lang.Exception或子類>e){
<處理異常e的代碼>
}
finally{
<有異常或無異常狀況下都執行的語句>
}
-注意點-
1. 每一個try塊都必須至少有一個catch或finally子句。
2. 若是某個特定異常類未被任何catch子句處理,該異常將沿着調用棧遞歸地傳播到下一個封閉try塊。若是任何封閉try塊都未捕獲到異常,Java解釋器將退出,並顯示錯誤消息和堆棧跟蹤信息。
catch關鍵字用來在try-catch或try-catch-finally語句中定義異常處理塊。
-示例-
try{
<可能引起異常的塊>
}
catch(<java.lang.Exception或子類>e){
<處理異常e的代碼>
}
try{
<可能引起其餘異常的塊>
}
catch(FooExceptione){
<處理FooExceptione的代碼>
}
catch(BarExceptione){
<處理BarExceptione的代碼>
}
try{
<可能引起異常的塊>
}
catch(<java.lang.Exception或子類>e){
<處理異常e的代碼>
}
finally{
<有異常或無異常狀況下都執行的語句>
}
-註釋-
開始和結束標記{和}是catch子句語法的一部分,即便該子句只包含一個語句,也不能省略這兩個標記。
每一個try塊都必須至少有一個catch或finally子句。
若是某個特定異常類未被任何catch子句處理,該異常將沿着調用棧遞歸地傳播到下一個封閉try塊。若是任何封閉try塊都未捕獲到異常,Java解釋器將退出,並顯示錯誤消息和堆棧跟蹤信息。
finally關鍵字用來定義始終在try-catch-finally語句中執行的塊。
finally塊一般包含清理代碼,用在部分執行try塊後恢復正常運行。
-示例-
try{
<可能引起異常的塊>
}
catch(<java.lang.Exception或子類>e){
<處理異常e的代碼>
}
finally{
<有異常或無異常狀況下都執行的語句>
}
-注意點-
1. 開始和結束標記{和}是finally子句語法的一部分,即便該子句只包含一個語句,也不能省略這兩個標記。
2. 每一個try塊都必須至少有一個catch或finally子句。
3. 若是執行try塊的任何部分,不管是否出現異常,也不論try或catch塊是否包含return、4. continue或break語句,都必定會執行finally塊中的代碼。
5. 若是不出現異常,控件將跳過try塊,進入finally塊。
6. 若是在執行try塊期間出現異常,而且相應的catch塊包含break、continue或return語句,7. 控件將首先穿過finally塊,以後再執行break、continue或return。
throw關鍵字用於引起異常。
-示例-
import java.io.IOException;
public class MyClass{
public method readFile(Stringfilename)throws IO Exception{
if(error){
throw new IO Exception("errorreadingfile");
}
}
}
-注意點-
1. throw語句將java.lang.Throwable做爲參數。Throwable在調用棧中向上傳播,直到被適當的catch塊捕獲。
2. 引起非RuntimeException異常的任何方法還必須在方法聲明中使用throws修飾符來聲明它引起的異常。
throws關鍵字能夠應用於方法,以便指出方法引起了特定類型的異常。
-示例-
import java.io.IOException;
public class MyClass{
public method readFile(Stringfilename)throwsIOException{
if(error){
throw new IO Exception("errorreadingfile");
}
}
}
-注意點-
1. throws關鍵字將逗號分隔的java.lang.Throwables列表做爲參數。
2. 引起非RuntimeException異常的任何方法還必須在方法聲明中使用throws修飾符來聲明它引起的異常。
3. 要在try-catch塊中包含帶throws子句的方法的調用,必須提供該方法的調用者。
import關鍵字使一個包中的一個或全部類在當前Java源文件中可見。能夠不使用徹底限定的類名來引用導入的類。
-示例-
importjava.io.File;
importjava.net.*;
-注意點-
package關鍵字指定在Java源文件中聲明的類所駐留的Java包。
-示例-
package com.mycompany;
public class MyClass{
}
-注意點-
1. package語句(若是出現)必須是Java源文件中的第一個非-註釋-性文本。
2. 在上面的-示例-中,MyClass類的徹底限定類名是com.mycompany.MyClass。
3. 若是Java源文件不包含package語句,在該文件中定義的類將位於「默認包」中。請注意,不能從非默認包中的類引用默認包中的類。
boolean變量的值能夠是true或false。
-示例-
boolean valid=true;
if(valid){ }
-注意點-
1. boolean變量只能以true或false做爲值。
2. boolean不能與數字類型相互轉換。
3. 包含boolean操做數的表達式只能包含boolean操做數。
4. Boolean類是boolean原始類型的包裝對象類。
byte是Java原始類型。
byte可存儲在[-128,127]範圍之內的整數值。
-示例-
byteb=124;
-注意點-
1. Byte類是byte原始類型的包裝對象類。它定義表明此類型的值的範圍的MIN_VALUE和MAX_VALUE常量。
2. Java中的全部整數值都是32位的int值,除非值後面有l或L(如235L),這表示該值應解釋爲long。
char是Java原始類型。char變量能夠存儲一個Unicode字符。
-示例-
chardelimiter=';';
-注意點-
1. 可使用下列char常量:
\b-空格
\f-換頁
\n-換行
\r-回車
\t-水平製表符
\'-單引號
\"-雙引號
\"-反斜槓
\xxx-採用xxx編碼的Latin-1字符。\x和\xx均爲合法形式,但可能引發混淆。
\uxxxx-採用十六進制編碼xxxx的Unicode字符。
2. Character類包含一些可用來處理char變量的static方法,這些方法包括isDigit()、isLetter()、isWhitespace()和toUpperCase()。
3. char值沒有符號。
double是Java原始類型。
double變量能夠存儲雙精度浮點值。
-示例-
double ratio=.01;
double diameter=6.15;
double height=1.35E03;//1.35*103或1350.0
double height=1e-2;//1.0*10-2或0.01
-注意點-
1. 因爲浮點數據類型是實際數值的近似值,所以,通常不要對浮點數值進行是否相等的比較。
2. Java浮點數值可表明無窮大和NaN(非數值)。Double包裝對象類用來定義常量MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY和NaN。
float是Java原始類型。
float變量能夠存儲單精度浮點值。
-示例-
float ratio=.01;
float diameter=6.15;
float height=1.35E03;//1.35*103或1350.0
float height=1e-2;//1.0*10-2或0.01
-註釋-
使用此關鍵字時應遵循下列規則:
1. Java中的浮點文字始終默認爲雙精度。要指定單精度文字值,應在數值後加上f或F,如0.01f。
2. 因爲浮點數據類型是實際數值的近似值,所以,通常不要對浮點數值進行是否相等的比較。
3. Java浮點數值可表明無窮大和NaN(非數值)。Float包裝對象類用來定義常量MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY和NaN。
int是Java原始類型。
int變量能夠存儲32位的整數值。
-示例-
int number=5;
int octal Number=0377;
int hex Number=0xff;
-注意點-
1. Integer類是int原始類型的包裝對象類。它定義表明此類型的值的範圍的MIN_VALUE和MAX_VALUE常量。
2. Java中的全部整數值都是32位的int值,除非值後面有l或L(如235L),這表示該值應解釋爲long。
long是Java原始類型。
long變量能夠存儲64位的帶符號整數。
-示例-
longnumber=5;
longanotherNumber=34590L;
longoctalNumber=0377;
longhexNumber=0xffl;
-注意點-
1. Long類是long原始類型的包裝對象類。它定義表明此類型的值的範圍的MIN_VALUE和MAX_VALUE常量。
2. Java中的全部整數值都是32位的int值,除非值後面有l或L(如235L),這表示該值應解釋爲long。
short是Java原始類型。
short變量能夠存儲16位帶符號的整數。
-示例-
short number=5;
short octalNumber=0077;
short hexNumber=0xff;
-注意點-
1. Short類是short原始類型的包裝對象類。它定義表明此類型的值的範圍的MIN_VALUE和MAX_VALUE常量。
2. Java中的全部整數值都是32位的int值,除非值後面有l或L(如235L),這表示該值應解釋爲long。
super關鍵字用於引用使用該關鍵字的類的超類。
-示例-
public class MyClass{
public MyClass(Stringarg){
super(arg);
}
public String myStringMethod(){
return super.other String Method();
}
}
-注意點-
1. 做爲獨立語句出現的super表示調用超類的構造方法。
2. super.<methodName>()表示調用超類的方法。只有在以下狀況中才須要採用這種用法:要調用在該類中被重寫的方法,以便指定應當調用在超類中的該方法。
this關鍵字用於引用當前實例。
-示例-
public class MyClass{
int number;
public MyClass(intnumber){
this.number=number;
}
}
-注意點-
1. 當引用可能不明確時,可使用this關鍵字來引用當前的實例。
2. 在上面的-示例-中,構造方法參數number與類的成員變量同名。this.number明確表示 MyClass的該實例的number成員變量。
void關鍵字表示null類型。
-示例-
public class MyClass{
public void do Something(){
return;
}
}
-注意點-
1.void能夠用做方法的返回類型,以指示該方法不返回值。
null是Java的保留字,表示無值。
-示例-
Integeri;
i=null;
Strings;
if(s!=null){
<statements>
}
-注意點-
1. 將null賦給非原始變量至關於釋放該變量先前所引用的對象。
2. 不能將null賦給原始類型(byte、short、int、long、char、float、double、boolean)變量。
true關鍵字表示boolean變量的兩個合法值中的一個。
-示例-
boolean is Complete=true;
false關鍵字表明boolean變量的兩個合法值之一。
-示例-
boolean is Complete=false;
在程序之中用於定義名稱的都表示標識符,例如:類的名稱、方法名稱或變量名稱等等。
l 字母、數字、下劃線和$開頭(數字不能開頭)
l 大小寫敏感
l 不能和關鍵字還有保留字衝突
l 見名知意思
l 駝峯法標識
l 常量所有大寫,單詞與單詞之間用下劃線鏈接