1. 程式人生 > >Java中的關鍵字和識別符號

Java中的關鍵字和識別符號

一.Java中對goto關鍵字的處理

在Java中,我們不能使用goto關鍵字,而是使用迴圈標籤,但是為了避免程式設計師自行使用goto,所以保留了goto作為一個關鍵字。類似的關鍵字還有const。

二.true、false、null是否是關鍵字

在Java中,true、false、null都不是關鍵字,而是字面常量(也稱為直接量),其中,true和false是布林型別的字面常量,null是引用型別的字面常量。這三個字面常量也不能作為識別符號使用。

三.Java中的關鍵字

關鍵字 含義
abstract 表明類或者成員方法具有抽象屬性
assert 用來進行程式除錯
boolean 基本資料型別之一,布林型別
break 提前跳出一個塊
byte 基本資料型別之一,位元組型別
case 用在switch語句之中,表是其中的一個分支
catch 用在異常處理中,用來捕捉異常
char 基本資料型別之一,字元型別
class
const 保留關鍵字,沒有具體含義
continue 回到一個塊的開始處
default 預設,例如,用在switch語句中,表明一個預設的分支
do 用在do-while迴圈結構中
double 基本資料型別之一,雙精度浮點數型別
else 用在條件語句中,表明當條件不成立時的分支
enum 列舉
extends 表明一個型別是另一個型別的子型別,這裡常見的型別有類和介面
final 用來說明最終屬性,表明一個類不能派生出子類,或者成員方法不能被覆蓋,或者成員域的值不能被改變
finally 用於處理異常情況,用來宣告一個基本肯定會被執行到的語句塊
float 基本資料型別之一,單精度浮點數型別
for 一種迴圈結構的引導詞
goto 保留關鍵字,沒有具體含義
if 條件語句的引導詞
implements 表明一個類實現了給定的介面
import 表明要訪問指定的類或包
instanceof 用來測試一個物件是否是指定型別的例項物件
int 基本資料型別之一,整數型別
interface 介面
long 基本資料型別之一,長整數型別
native 用來宣告一個方法是由與計算機相關的語言(如C/C++/FORTRAN語言)實現的
new 用來建立新例項物件
package
private 一種訪問控制方式:私用模式
protected 一種訪問控制方式:保護模式
public 一種訪問控制方式:共用模式
return 從成員方法中返回資料
short 基本資料型別之一,短整數型別
static 表明具有靜態屬性
strictfp 用來宣告FP_strict(單精度或雙精度浮點數)表示式遵循IEEE 754算術規範
super 表明當前物件的父型別的引用或者父型別的構造方法
switch 分支語句結構的引導詞
synchronized 表明一段程式碼需要同步執行
this 指向當前例項物件的引用
throw 丟擲一個異常
throws 宣告在當前定義的成員方法中所有需要丟擲的異常
transient 宣告不用序列化的成員域
try 嘗試一個可能丟擲異常的程式塊
void 聲明當前成員方法沒有返回值
volatile 表明兩個或者多個變數必須同步地發生變化
while 用在迴圈結構中
四.Java識別符號的定義規則

1.大多數人理解的Java標誌符的定義規則:

(1).識別符號由字母、數字、貨幣符號(¥、$)、連線符號(_)組成。

(2).識別符號的首字母可以是字母、貨幣符號與連線符號,但是不能為數字。

(3).識別符號不能與Java中的關鍵字相同。

(4).識別符號不能與Java中預定義的字面常量名稱相同(如true、false、null)。

上面的規則在大部分時候是正確的,但是要注意這裡的字母不只是傳統中的26個英文字母,而是Unicode字符集,Unicode字符集的取值範圍是U+0000~U+10FFFF,但是不是每一個Unicode值都與一個字元相對應,這就意味著不是整個Unicode字符集都可以作為Java中的識別符號。還有就是不能作為Java識別符號首字母的字符集,也不僅僅是簡單的0~9這10個數字。那麼我們怎麼判斷一個Unicode是否可以作為Java識別符號呢?在Character中有這樣兩個方法可以進行判斷:

public static boolean isJavaIdentifierStart(char ch);判斷對應的字元是否可以作為Java的識別符號的首字元

public static boolean isJavaIdentifierPart(char ch);判斷對應的字元是否可以作為Java的識別符號

由於Unicode字符集的擴充套件,為了能夠處理增補字元(U+10000~U+10FFFF),在jdk1.5中增加了兩個方法,也用於此作用:

public static boolean isJavaIdentifierStart(int codePoint);判斷程式碼點對應的字元是否可以作為Java的識別符號的首字元

public static boolean isJavaIdentifierPart(int codePoint);判斷程式碼點對應的字元是否可以作為Java的識別符號

2.現在,我們重新定義一下識別符號的定義規則:

(1).識別符號的首字母對應的程式碼點必須使得Character類的isJavaIdentifierStar()方法返回值為true,後續的字元對應的程式碼點必須使得Character類的isJavaIdentifierPart()的返回值為true。

(2).識別符號不能與Java中的關鍵字相同。

(3).識別符號不能和Java中預定義的字面常量名稱相同。

(4).識別符號的長度必須在系統所支援的範圍內。

五.注意符號“$”的使用

在定義Java識別符號的時候,我們可以使用$,並且可以使用它作為識別符號的首字母,但是我們需要注意$這個符號可以在內部類中使用,所以當我們使用$作為關鍵字字元時,需要考慮到這一點。

public class User$Vip {

	public static void main(String[] args) {
		
	}
}

class User{
	class Vip{
		void print()
		{
			System.out.println("vip");
		}
	}
}

上面這個例子就是因為類標誌符中使用$,與內部類中的$衝突,所以編譯的時候會報錯,提示User.Vip類重複了。其原因是在編譯為class檔案的時候,會存在兩個User$Vip.class,所以會報錯。

六.識別符號的最大長度

在Java語言規範中,對於Java標誌符的長度是沒有限制的,但是在Java虛擬機器規範中,識別符號是有長度限制的。在class檔案中,代表識別符號的常量字串儲存在CONSTANT_Utf8_info表中,這個表用了兩個位元組的來表示字串的長度。所以最大表示65535.