java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字
合法標(biāo)識(shí)符
Java語(yǔ)言中,對(duì)于變量,常量,函數(shù),語(yǔ)句塊均有名字,我們統(tǒng)統(tǒng)稱之為Java標(biāo)識(shí)符.標(biāo)識(shí)符是用來(lái)給類、對(duì)象、方法、變量、接口和自定義數(shù)據(jù)類型命名的。
組成:Java標(biāo)識(shí)符由數(shù)字,字母和下劃線(_),美元符號(hào)($)組成(此處的字母并不局限于26個(gè)英文字母,而且可以包含中文字符、日文字符等)。Java語(yǔ)言支持Unicode6.2.0字符集,因此Java的標(biāo)識(shí)符可以使用Unicode6.0.0所能表示的多種語(yǔ)言的字符。
標(biāo)識(shí)符必須遵循以下規(guī)則
1.?標(biāo)識(shí)符由26個(gè)英文字符大小寫(a~zA~Z)、數(shù)字(0~9)、下劃線(_)和美元符號(hào)($)組成。
2.?不能以數(shù)字開(kāi)頭,不能是關(guān)鍵字,也不能包含空格。
3.?嚴(yán)格區(qū)分大小寫
4.?標(biāo)識(shí)符的可以為任意長(zhǎng)度
Java中的標(biāo)識(shí)符命名規(guī)范
1.?包名:多個(gè)單詞組成時(shí)所有字母小寫(例:package??com.itcast)
2.?類名和接口:多個(gè)單詞組成時(shí)所有單詞的首字母大寫(例:HelloWorld)
3.?變量名和函數(shù)名:多個(gè)單詞組成時(shí)第一個(gè)單詞首字母小寫,其他單詞首字母大寫(例:lastAccessTime、getTime)。
4.?常量名:多個(gè)單詞組成時(shí),字母全部大寫,多個(gè)單詞之間使用_分隔(例:INTEGER_CACHE)
注意:只是為了增加規(guī)范性、可讀性而做的一種約定,標(biāo)識(shí)符在定義的時(shí)候最好見(jiàn)名知意,提高代碼閱讀性。
可以使用java自帶的函數(shù)判斷每行字符串是否可以作為JAVA語(yǔ)法的合法標(biāo)識(shí)符,例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static boolean valid(String str)
{
if(Character.isJavaIdentifierStart(str.charAt(0)))
// 如果第一個(gè)字符是Java合法的標(biāo)識(shí)符,進(jìn)入if語(yǔ)句
{
for(int i=1; i
// 從第二個(gè)標(biāo)識(shí)符開(kāi)始,逐個(gè)遍歷
{
if(!Character.isJavaIdentifierPart(str.charAt(i)))
// 如果第i個(gè)標(biāo)識(shí)符不是Java的合法標(biāo)識(shí)符,返回false
{
return false;
}
}
// 如果標(biāo)識(shí)符是合法的Java標(biāo)識(shí)符,返回true
return true;
}
// 如果第一個(gè)字符不是Java合法的標(biāo)識(shí)符,返回false
return false;
}
public static void main(String[] args) throws IOException ?{
/*
* BufferedReader對(duì)象只將回車看作輸入結(jié)束
* Scanner對(duì)象把回車,空格,tab鍵都看作輸入結(jié)束
*/
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String text = buffer.readLine();
// 先讀取一行字符串
while(text != null){
// 讀取的字符串為空,則結(jié)束循環(huán)
System.out.println(valid(text));
text = buffer.readLine();
}
}
}
java修飾符
java提供了很多修飾符,主要分為以下兩類:
訪問(wèn)修飾符
非訪問(wèn)修飾符
修飾符用來(lái)定義類、方法或者變量,通常放在語(yǔ)句的最前端。
訪問(wèn)控制修飾符
java中,可以使用訪問(wèn)控制符來(lái)保護(hù)對(duì)象類、變量、方法和構(gòu)造方法的訪問(wèn)。
default?(即缺省,什么也不寫): 在同一包內(nèi)可見(jiàn),不使用任何修飾符。使用對(duì)象:類、接口、變量、方法。
private?: 在同一類內(nèi)可見(jiàn)。使用對(duì)象:變量、方法。?注意:不能修飾類(外部類)
public?: 對(duì)所有類可見(jiàn)。使用對(duì)象:類、接口、變量、方法
protected?: 對(duì)同一包內(nèi)的類和所有子類可見(jiàn)。使用對(duì)象:變量、方法。?注意:不能修飾類(外部類)。
修飾符
當(dāng)前類
同一包內(nèi)
子孫類(同一包)
子孫類(不同包)
其他包
public
Y
Y
Y
Y
Y
protected
Y
Y
Y
N/Y
N
default
Y
Y
N
N
N
private
Y
N
N
N
N
1、類修飾符
訪問(wèn)修飾符:公共類修飾符public
非訪問(wèn)修飾符:抽象類修飾符 abstract、最終類修飾符 final
(1)公共類修飾符public:java語(yǔ)言中類的訪問(wèn)控制符只有public即公共的,每個(gè)java程序有且只有一個(gè)類是public,其他外部類沒(méi)有訪問(wèn)控制修飾符,具有包訪問(wèn)性。
(2)抽象類修飾符abstract :用abstract 修飾的類稱為抽象類。
(3)最終類修飾符final:當(dāng)一個(gè)類不能被繼承時(shí)可用修飾符final修飾為最終類。
(4)類缺省訪問(wèn)控制符:如果一個(gè)類沒(méi)有訪問(wèn)控制符,說(shuō)明它具有缺省的訪問(wèn)控制符特性。此時(shí),這個(gè)類只能被同一個(gè)包中的類訪問(wèn)或引用。這一訪問(wèn)特性又稱為包訪問(wèn)性。
2.方法修飾符
訪問(wèn)控制修飾符:公共訪問(wèn)控制符public、保護(hù)訪問(wèn)控制符protected、缺省默認(rèn)default、私有訪問(wèn)控制符private。
非訪問(wèn)控制符:抽象方法控制符abstract 、靜態(tài)方法控制符static 、最終方法控制符final 、本地方法控制符native 、同步方法控制符synchronized。
(1)抽象方法控制符 abstract :用修飾符 abstract 修飾的方法稱為抽象方法。抽象方法僅有方法頭,沒(méi)有方法體和操作實(shí)現(xiàn)。
(2)靜態(tài)方法控制符 static :用修飾符 static 修飾的方法稱為靜態(tài)方法。靜態(tài)方法是屬于整個(gè)類的類方法;而不使用static 修飾、限定的方法是屬于某個(gè)具體類對(duì)象的方法。 由于 static方法是屬于整個(gè)類的,所以它不能操縱和處理屬于某個(gè)對(duì)象的成員變量,而只能處理屬于整個(gè)類的成員變量,即 static 方法只能處理 static的域。
(3)最終方法控制符 final :用修飾符 final修飾的方法稱為最終方法。最終方法是功能和內(nèi)部語(yǔ)句不能更改的方法,即最終方法不能重寫覆蓋。final固定了方法所具有的功能和操作,防止當(dāng)前類的子類對(duì)父類關(guān)鍵方法的錯(cuò)誤定義,保證了程序的安全性和正確性。所有被private 修飾符限定為私有的方法,以及所有包含在 final 類 ( 最終類) 中的方法,都被認(rèn)為是最終方法。
(4)本地方法控制符 native :用修飾符 native 修飾的方法稱為本地方法。為了提高程序的運(yùn)行速度,需要用其它的高級(jí)語(yǔ)言書寫程序的方法體,那么該方法可定義為本地方法用修飾符 native 來(lái)修飾。
(5)同步方法控制符 synchronized :該修飾符主要用于多線程程序中的協(xié)調(diào)和同步。
3.變量修飾符
訪問(wèn)控制符:公共訪問(wèn)控制符public 、保護(hù)訪問(wèn)控制符protected 、缺省默認(rèn)訪問(wèn)控制符default、私有訪問(wèn)控制符private
非訪問(wèn)控制符:靜態(tài)域修飾符static 、最終域修飾符 final 、易失 ( 共享 ) 域修飾符volatile 、暫時(shí)性域修飾符transient
(1)公共訪問(wèn)控制符 public :用 public 修飾的域稱為公共域。由于 public 修飾符會(huì)降低運(yùn)行的安全性和數(shù)據(jù)的封裝性,所以一般應(yīng)減少 public 域的使用。
(2)私有訪問(wèn)控制符 private : 用 private 修飾的成員變量 ( 域 ) 只能被該類自身所訪問(wèn),而不能被任何其它類 (?包括子類?) 所引用。
(3)保護(hù)訪問(wèn)控制符 protected :用 protected 修飾的成員變量可以被三種類所引用:①該類自身;②同一個(gè)包中的其它類;③其它包中的子類。使用修飾符 protected 的主要作用是允許其它包中的子類來(lái)訪問(wèn)父類的特定屬性。
(4) 缺省默認(rèn)修飾符 :沒(méi)有訪問(wèn)控制修飾符或用修飾符 default修飾的成員變量可以被該類本身或同一包中的其他類訪問(wèn)。
(5)靜態(tài)域修飾符 static :用 static修飾的成員變量?jī)H屬于類的變量,而不屬于任何一個(gè)具體的對(duì)象。
(6)最終域修飾符 final :最終域修飾符 final 是用來(lái)定義常量的。一個(gè)類的域 ( 成員變量 ) 如果被修飾符 final 說(shuō)明,則它的取值在程序的整個(gè)執(zhí)行過(guò)程中都是不變的。
(7)易失 ( 共享 ) 域修飾符 volatile :易失 ( 共享 ) 域修飾符 volatile是用來(lái)說(shuō)明這個(gè)成員變量可能被幾個(gè)線程所控制和修改。也就是說(shuō)在程序運(yùn)行過(guò)程中,這個(gè)成員變量有可能被其它的程序影響或改變它的取值。通常 volatile 用來(lái)修飾接受外部輸入的域。
8)暫時(shí)性域修飾符 transient :暫時(shí)性域修飾符 transient 用來(lái)定義一個(gè)暫時(shí)性變量。其特點(diǎn)是:用修飾符transient 限定的暫時(shí)性變量,將指定 Java虛擬機(jī)認(rèn)定該暫時(shí)性變量不屬于永久狀態(tài),以實(shí)現(xiàn)不同對(duì)象的存檔功能。否則,類中所有變量都是對(duì)象的永久狀態(tài)的一部分,存儲(chǔ)對(duì)象時(shí)必須同時(shí)保存這些變量。
本部分參考于作者老鼠愛(ài)大米的文章,原文:https://blog.csdn.net/u012723673/article/details/80613557。
java中的關(guān)鍵字
關(guān)鍵字是編程語(yǔ)言里事先定義好并賦予了特殊含義的的單詞,也稱保留字。Java中一個(gè)有53個(gè)關(guān)鍵字。
數(shù)據(jù)類型:
Boolean? ? int??? long??? short??? byte??? float??? double??? char??? class??? interface(接口)
Interface
用來(lái)定義一系列方法和常量,它可以被類實(shí)現(xiàn),通過(guò)implements關(guān)鍵字。
流程控制:
if???? else??? do??? while??? for??? switch??? case??? default??? break??? continue??? return??? try (捕獲異常) ? catch(處理異常) ? ?finally(有沒(méi)有處理異常都執(zhí)行)
Throw
運(yùn)行用戶拋出一個(gè)exception對(duì)象,或者任何實(shí)現(xiàn)throwable的對(duì)象。
Throws
用在方法的聲明中用來(lái)說(shuō)明哪些異常這個(gè)方法是不處理的,而是提交到程序的更高一層。
Return
用來(lái)結(jié)束一個(gè)方法的執(zhí)行,,他后面可以跟一個(gè)方法聲明中要求的值。
Case
用來(lái)定義一組分支選擇,如果有某個(gè)值和switch中給出的值一樣,就會(huì)從該分支開(kāi)始實(shí)行。
Try
用來(lái)定義一個(gè)可能拋出異常的語(yǔ)句塊。如果一個(gè)異常被拋出,一個(gè)可選的catch語(yǔ)句塊會(huì)處理try語(yǔ)句中拋出的異常。同時(shí)一個(gè)finally語(yǔ)句會(huì)被執(zhí)行,無(wú)論異常是否被拋出。
Catch
用來(lái)聲明try語(yǔ)句中發(fā)生運(yùn)行錯(cuò)誤或非運(yùn)行時(shí)異常時(shí)運(yùn)行的一個(gè)塊。
修飾符:
public??? protected??? private??? final ? ?void???? static??? strictfp (嚴(yán)格 精確) ? ?abstract(抽象的) ? ? transient(短暫) ? synchronized(線程 同步) ? ? volatile(易失) ? ?native(本地)
Abstract
用在類的聲明中來(lái)指明一個(gè)類是不能實(shí)例化的,但是可以被其他類繼承。一個(gè)抽象類可以使用抽象的方法,抽象方法不需要被實(shí)現(xiàn),但需要在子類中被實(shí)現(xiàn)。
Synchronized
線程同步。
Volatile
用在變量的聲明中表示這個(gè)變量是被同時(shí)運(yùn)行的幾個(gè)線程異步修改的。
動(dòng)作:
package ? ?import(引入) ? ? throw(拋出一個(gè)異常對(duì)象) ? ?throws (聲明一個(gè)異常對(duì)象 ?可能被拋出) ? ?extends(繼承) ? ?implements(實(shí)現(xiàn)) ? ?this(本類) ? ?super(父類 超類) ? ?instanceof(實(shí)例) ? ?new
Super
父類。
This
用來(lái)代表它出現(xiàn)的類的一個(gè)實(shí)例。This可訪問(wèn)類變量或類方法。
參考于作者:國(guó)家一級(jí)鍵盤手操作表演藝術(shù)家,原文:https://blog.csdn.net/zianY/article/details/78738852
總結(jié)
以上是生活随笔為你收集整理的java中的标识符和关键字_浅谈java中的标识符、修饰符和关键字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java中封装日期加时间_java日期处
- 下一篇: java从键盘输入数据斐波那契数_从键盘