java基礎-03基本語法

關鍵詞

經常使用關鍵字53個(含2個保留字):html

一、保留關鍵字(2個)

const ——常量

常數:用於修改字段或局部變量的聲明。java

goto——轉到

指定跳轉到標籤,找到標籤後,程序將處理從下一行開始的命令git

二、訪問修飾符的關鍵字(3個)

public (公有的)

可跨包github

protected (受保護的)

當前包內可用spring

private (私有的)

當前類可用express

三、定義類、接口、抽象類和實現接口、繼承類的關鍵字、實例化對象(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表示一個類

四、包的關鍵字(2個)

package (定義包的關鍵字):

將全部相關的類放在一個包類以便查找修改等

import (引入包的關鍵字):

引入包

五、數據類型的關鍵字(12個)

byte (字節型):8bit

char (字節型):16bit

short (短整型):16bit

int (整型):32bit

long (長整型):64bit

float (浮點型):32bit

double (雙精度):64bit

boolean (布爾型):

true (真)

false (假)

void (無返回):

public void A(){}其餘須要反回的常常與return連用

null (空值)

六、條件循環(流程控制)(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類型的數據

七、修飾方法、類、屬性和變量(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

八、錯誤處理(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{......}

九、其它(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爲右值。

參考

相關文章
相關標籤/搜索