java基礎-03基本語法
關鍵詞
常用關鍵字53個(含2個保留字):
1、保留關鍵字(2個)
const ——常量
常數:用於修改欄位或區域性變數的宣告。
goto——轉到
指定跳轉到標籤,找到標籤後,程式將處理從下一行開始的命令
2、訪問修飾符的關鍵字(3個)
public (公有的)
可跨包
protected (受保護的)
當前包內可用
private (私有的)
當前類可用
3、定義類、介面、抽象類和實現介面、繼承類的關鍵字、例項化物件(6個)
class (類):
public class A(){}花括號裡是已實現的方法體,類名需要與檔名相同
interface (介面):
public interface B(){}花括號裡有方法體,但沒有實現,方法體句子後面是英文分號;結尾
abstract (宣告抽象):
public abstract class C(){}介於類與介面中間,可以有,也可以沒有已經實現的方法體
implements (實現):
實現介面public class A implements B(){}
extends (繼承):
繼承類public class A extends D(){}
new (建立新物件):
A a=new A();A表示一個類
4、包的關鍵字(2個)
package (定義包的關鍵字):
將所有相關的類放在一個包類以便查詢修改等
import (引入包的關鍵字):
引入包
5、資料型別的關鍵字(12個)
byte (位元組型):8bit
char (位元組型):16bit
short (短整型):16bit
int (整型):32bit
long (長整型):64bit
float (浮點型):32bit
double (雙精度):64bit
boolean (布林型):
true (真)
false (假)
void (無返回):
public void A(){}其他需要反回的經常與return連用
null (空值)
6、條件迴圈(流程控制)(12個)
if (如果) :
if(條件語句{執行程式碼}
如果條件語句成立,就開始執行{}裡面的內容
else (否則,或者) :
常與if連用,用法相同:
if(...){...}else{...}
while (當什麼時候):
while(條件語句){執行程式碼}
do (執行) :
通長與while連用 do {} while()
for(帶序號的遍歷):
for(初始化迴圈變數;判斷條件;迴圈變數值{}
break (跳出迴圈):
直接跳出迴圈,執行迴圈體後的程式碼
continue (繼續) :
中斷本次迴圈,並開始下一輪迴圈
switch (選擇結構):
程式碼如下
switch(表示式){
case 常量表達式1:語句1;
...
case 常量表達式2:語句2;
default:語句;
}
case (匹配switch的表示式裡的結果) :同上
default (預設): default就是如果沒有匹配的case就執行它, default並不是必須的
return (返回) :
返回方法指定型別的值或結束方法的執行
instanceof(例項):
一個二元操作符,和==、>、<是同一類的。測試它左邊的物件是否是它右邊的類的例項,返回boolean型別的資料
7、修飾方法、類、屬性和變數(9個)
static(靜態的):
屬性和方法都可以用static修飾,直接使用【類名.屬性和類名.方法名】。
只有內部類可以使用static關鍵字修飾,呼叫直接使用【類名.內部類類名】進行呼叫。
static可以獨立存在,靜態程式碼塊,初始化靜態變數。
final(最終的不可被改變):
- 方法和類都可用final來修飾;
- final修飾的類是不能被繼承的;
- final修飾的方法是不能被子類重寫。
- 常量的定義:final修飾的屬性就是常量
super(呼叫父類的方法):
常見public void paint(Graphics g){super.paint(g);...}
this(當前類的物件):
呼叫當前類中的方法(表示呼叫這個方法的物件)this.addActionListener(al):等等
native(本地):
native 關鍵字可以應用於方法,以指示該方法是用 Java 以外的語言實現的。
strictfp(嚴格,精準,strict float point 精確浮點):主要針對浮點數運算
在Java虛擬機器進行浮點運算時,如果沒有指定strictfp關鍵字時,Java的編譯器以及執行環境在對浮點運算的表示式是採取一種近似於我行我素的行為來完成這些操作,以致於得到的結果往往無法令人滿意。
一旦使用了strictfp來宣告一個類、介面或者方法時,那麼所宣告的範圍內Java的編譯器以及執行環境會完全依照浮點規範IEEE-754來執行。因此如果想讓浮點運算更加精確,而且不會因為不同的硬體平臺所執行的結果不一致的話,那就請用關鍵字strictfp。
可以將一個類、介面以及方法宣告為strictfp,但是不允許對介面中的方法以及建構函式宣告strictfp關鍵字
transient(短暫的) 美[ˈtrænziənt],修飾字段,該欄位不被序列化
物件在持久化或網路傳輸時,都需要序列化,而有一些沒有必要出現在序列化結果中的欄位,就可以新增關鍵詞 transient
synchronized(執行緒,同步):
一個時間內只能有一個執行緒得到執行。另一個執行緒必須等待當前執行緒執行完這個程式碼塊以後才能執行該程式碼塊
volatile(易變的) 美[ˈvɑ:lətl]
- volatile 關鍵字用於表示可以被多個執行緒非同步修改的成員變數。
- 在訪問volatile變數時不會執行加鎖操作,因此也就不會使執行執行緒阻塞,因此volatile變數是一種比sychronized關鍵字更輕量級的同步機制。
- 宣告變數是 volatile 的,JVM 保證了每次讀變數都從記憶體中讀,跳過 CPU cache 這一步,保證讀到的都是記憶體中的值。
- 使用場景:1.狀態標記量 2,單例中的double check
8、錯誤處理(5個)
try 嘗試執行,可能有異常
{ //執行的程式碼,其中可能有異常。一旦發現異常,則立即跳到catch執行。否則不會執行catch裡面的內容 }
catch 捕捉異常
{ //除非try裡面執行程式碼發生了異常,否則這裡的程式碼不會執行 }
finally 不管是否有異常都會執行
{ //不管什麼情況都會執行,包括try catch 裡面用了return ,可以理解為只要執行了try或者catch,就一定會執行 finally }
throw 語句 丟擲一個異常
語法:throw (異常物件);
throw e;
throws是宣告方法可能丟擲的異常。
(用在宣告方法時,表示該方法可能要丟擲異常)
如下例子:
public void doA(int a) throws Exception1,Exception3{......}
9、其它(2個)
enum(列舉,列舉)
assert(斷言)
識別符號
識別符號就是用於給 Java 程式中變數、類、方法等命名的符號。
按照【阿里巴巴Java開發手冊】執行比較好。下面摘抄幾個:
1. 【強制】程式碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
反例:_name / name / $name / name_ / name$ / name
2. 【強制】程式碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。
說明:正確的英文拼寫和語法可以讓閱讀者易於理解,避免歧義。注意,即使純拼音命名方式也要避免採用。
正例:alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [評分] / int 某變數 = 3
3. 【強制】類名使用 UpperCamelCase 風格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。
4. 【強制】方法名、引數名、成員變數、區域性變數都統一使用 lowerCamelCase 風格,必須遵從駝峰形式。
正例: localValue / getHttpMessage() / inputUserId
5. 【強制】常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。
6. 【強制】抽象類命名使用 Abstract 或 Base 開頭,如AbstractCollection;
異常類命名使用 Exception 結尾,如IOException;
測試類命名以它要測試的類的名稱開始,以 Test 結尾,如HomeControllerTest。
7. 【強制】型別與中括號緊挨相連來表示陣列。
正例:定義整形陣列 int[] arrayDemo;
反例:在 main 引數中,使用 String args[]來定義。
8. 【強制】POJO 類中布林型別的變數,都不要加 is 字首,否則部分框架解析會引起序列化錯誤。
反例:定義為基本資料型別 Boolean isDeleted 的屬性,它的方法也是 isDeleted(),RPC框架在反向解析的時候,“誤以為”對應的屬性名稱是 deleted,導致屬性獲取不到,進而丟擲異常。
9. 【強制】包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一使用單數形式,但是類名如果有複數含義,類名可以使用複數形式。
正例:應用工具類包名為 com.alibaba.ai.util、類名為 MessageUtils(此規則參考 spring的框架結構)
10. 【強制】杜絕完全不規範的縮寫,避免望文不知義。
反例:AbstractClass“縮寫”命名成 AbsClass;condition“縮寫”命名成 condi,此類隨意縮寫嚴重降低了程式碼的可閱讀性。
運算子
算術運算子
操作符 描述
+ 加法
- 減法
* 乘法
/ 除法
% 取餘
++ 自增
-- 自減
關係運算符
運算子 描述
== 檢查如果兩個運算元的值是否相等,如果相等則條件為真。
!= 檢查如果兩個運算元的值是否相等,如果值不相等則條件為真。
> 檢查左運算元的值是否大於右運算元的值,如果是那麼條件為真。
< 檢查左運算元的值是否小於右運算元的值,如果是那麼條件為真。
>= 檢查左運算元的值是否大於或等於右運算元的值,如果是那麼條件為真。
<= 檢查左運算元的值是否小於或等於右運算元的值,如果是那麼條件為真。
位運算子
操作符 描述
& 如果相對應位都是1,則結果為1,否則為0
| 如果相對應位都是0,則結果為0,否則為1
^ 如果相對應位值相同,則結果為0,否則為1
~ 按位取反運算子翻轉運算元的每一位,即0變成1,1變成0。
<< 按位左移運算子。左運算元按位左移右運算元指定的位數。
>> 按位右移運算子。左運算元按位右移右運算元指定的位數。
>>> 按位右移補零操作符。左運算元的值按右運算元指定的位數右移,移動得到的空位以零填充。
邏輯運算子
操作符 描述
&& 稱為邏輯與運算子。當且僅當兩個運算元都為真,條件才為真。
|| 稱為邏輯或操作符。如果任何兩個運算元任何一個為真,條件為真。
! 稱為邏輯非運算子。用來反轉運算元的邏輯狀態。如果條件為true,則邏輯非運算子將得到false。
賦值運算子
操作符 描述
= 簡單的賦值運算子,將右運算元的值賦給左側運算元
+= 加和賦值操作符,它把左運算元和右運算元相加賦值給左運算元
-= 減和賦值操作符,它把左運算元和右運算元相減賦值給左運算元
*= 乘和賦值操作符,它把左運算元和右運算元相乘賦值給左運算元
/= 除和賦值操作符,它把左運算元和右運算元相除賦值給左運算元
(%)= 取模和賦值操作符,它把左運算元和右運算元取模後賦值給左運算元
<<= 左移位賦值運算子
>>= 右移位賦值運算子
&= 按位與賦值運算子
^= 按位異或賦值操作符
|= 按位或賦值操作符
其他運算子
條件運算子(?:)
條件運算子也被稱為三元運算子。該運算子有3個運算元,並且需要判斷布林表示式的值。該運算子的主要是決定哪個值應該賦值給變數。
variable x = (expression) ? value if true : value if false
比如 b = (a == 1) ? 20 : 30;
instanceof 運算子
該運算子用於操作物件例項,檢查該物件是否是一個特定型別(類型別或介面型別)。
instanceof運算子使用格式如下:
( Object reference variable ) instanceof (class/interface type)
比如: boolean result = name instanceof String; // 由於 name 是 String 型別,所以返回真
字面量
字面量是指由字母,數字等構成的字串或者數值,它只能作為右值出現,所謂右值是指等號右邊的值,
如:int a=123這裡的a為左值,123為右值。
參考
- JAVA關鍵字及作用 https://www.cnblogs.com/AloneZ/p/java1.html
- 學習JAVA必備常用單詞 https://baijiahao.baidu.com/s?id=1617186189393333847&wfr=spider&for=pc
- Java中的關鍵字 transient http://www.cnblogs.com/chenpi/p/6185773.html
- Java中Volatile關鍵字詳解 https://www.cnblogs.com/zhengbin/p/5654805.html#autoid-0-0-0
- Java併發程式設計:volatile關鍵字解析 https://www.cnblogs.com/dolphin0520/p/3920373.html
- Java識別符號規範書寫規則 https://blog.csdn.net/n20164206199/article/details/79013161
- 阿里巴巴Java開發手冊1.4.0 https://github.com/alibaba/p3c
- Java 運算子 http://www.runoob.com/java/java-operators.html