Java 基礎文法
Java 辨別符
辨別符可以簡單地了解為一個名字,用來辨別類名、變量名、方法名、數組名、檔案名的有效字元序列。
辨別符雖然可以任意取名,但是也要遵循一定的規則,辨別符的幾點命名規則如下所示:
- 所有的辨別符都應該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始
- 首字元之後可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數字的任何字元組合
- 辨別符不能是Java的關鍵字和保留字
- 辨別符是大小寫敏感的,如果兩個辨別符的字母相同但是大小寫不同,就是不同的辨別符
- 合法辨別符舉例:age、$salary、_value、__1_value
- 非法辨別符舉例:123abc、-salary
- Java語言使用Unicode标準字元集,最多可以識别65535個字元。是以,Java語言中的字母可以是Unicode字元集中的任何字元,包括拉丁字母、漢字、日文和其他許多語言中的字元。
Java 關鍵字
類别 | 關鍵字 | 說明 |
---|---|---|
通路控制 | private | 私有的 |
\ | protected | 受保護的 |
\ | public | 公共的 |
類、方法和變量修飾符 | abstract | 聲明抽象 |
\ | class | 類 |
\ | extends | 擴充,繼承 |
\ | final | 最終值,不可改變的 |
\ | implements | 實作(接口) |
\ | interface | 接口 |
\ | native | 本地,原生方法(非 Java 實作) |
\ | new | 新,建立 |
\ | static | 靜态 |
\ | strictfp | 嚴格,精準 |
\ | synchronized | 線程,同步 |
\ | transient | 短暫 |
\ | volatile | 易失 |
程式控制語句 | break | 跳出循環 |
\ | case | 定義一個值以供 switch 選擇 |
\ | continue | 繼續 |
\ | default | 預設 |
\ | do | 運作 |
\ | else | 否則 |
\ | for | 循環 |
\ | if | 如果 |
\ | instanceof | 執行個體 |
\ | return | 傳回 |
\ | switch | 根據值選擇執行 |
\ | while | 循環 |
錯誤處理 | assert | 斷言表達式是否為真 |
\ | catch | 捕捉異常 |
\ | finally | 有沒有異常都執行 |
\ | throw | 抛出一個異常對象 |
\ | throws | 聲明一個異常可能被抛出 |
\ | try | 捕獲異常 |
包相關 | import | 引入 |
\ | package | 包 |
基本類型 | boolean | 布爾型 |
\ | byte | 位元組型 |
\ | char | 字元型 |
\ | double | 雙精度浮點 |
\ | float | 單精度浮點 |
\ | int | 整型 |
\ | long | 長整型 |
\ | short | 短整型 |
變量引用 | super | 父類,超類 |
\ | this | 本類 |
\ | void | 無傳回值 |
保留關鍵字 | goto | 是關鍵字,但不能使用 |
\ | const | 是關鍵字,但不能使用 |
\ | null | 空 |
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLxcmeNlXVE5keJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0QTO1IDM0ADM3ITMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Java 變量
Java 中主要有如下幾種類型的變量
- 類變量 (靜态變量):獨立于方法之外的變量,用 static 修飾。
- 成員變量 (非靜态變量):獨立于方法之外的變量,不過沒有 static 修飾。
- 局部變量:類的方法中的變量。
聲明變量
在程式設計中,變量的使用是一個十分重要的環節,定義一個變量,就是要告訴編譯器(compiler)這個變量屬于哪一種資料類型,這樣編譯器才知道需要配置多少空間,以及能存放什麼樣的資料。變量都有一個變量名,變量名必須是合法的辨別符,記憶體空間内的值就是變量值。在聲明變量時可以是不給予指派,也可以是直接賦給初值。
聲明常量
在程式運作過程中一直不會改變的量稱為常量(constant),通常也被稱為“final變量”。常量在整個程式中隻能被指派一次。在為所有對象共享的值時,常量是非常有用的。
Java語言支援一些特殊的轉義字元序列
轉移字元對應的英文是escape character , 轉義字元串(Escape Sequence)字母前面加上捺斜線""來表示常見的那些不能顯示的ASCII字元.稱為轉義字元.如\0,\t,\n等,就稱為轉義字元,因為後面的字元,都不是它本來的ASCII字元意思了。
轉義字元 | 意義 | ASCII碼值(十進制) |
---|---|---|
\a | 響鈴(BEL) | 007 |
\b | 倒退(BS) ,将目前位置移到前一列 | 008 |
\f | 換頁(FF),将目前位置移到下頁開頭 | 012 |
\n | 換行(LF) ,将目前位置移到下一行開頭 | 010 |
\r | 回車(CR) ,将目前位置移到本行開頭 | 013 |
\t | 水準制表(HT) (跳到下一個TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一個反斜線字元’’\’ | 092 |
\’ | 代表一個單引号(撇号)字元 | 039 |
\" | 代表一個雙引号字元 | 034 |
\0 | 空字元(NULL) | 000 |
\ddd | 1到3位八進制數所代表的任意字元 | 三位八進制 |
\xhh | 1到2位十六進制所代表的任意字元 | 二位十六進制 |
注意:區分,斜杠:"/" 與 反斜杠:"" ,此處不可互換
點的轉義:. ==> u002E
美元符号的轉義:$ ==> u0024
乘方符号的轉義:^ ==> u005E
左大括号的轉義:{ ==> u007B
左方括号的轉義:[ ==> u005B
左圓括号的轉義:( ==> u0028
豎線的轉義:| ==> u007C
右圓括号的轉義:) ==> u0029
星号的轉義:* ==> u002A
加号的轉義:+ ==> u002B
問号的轉義:? ==> u003F
反斜杠的轉義:/==> u005C
變量的有效範圍
變量的有效範圍是指程式代碼能夠通路該變量的區域,若超出變量所在區域通路變量則編譯時會出現錯誤。在程式中,一般會根據變量能夠通路的區域将變量分為“成員變量”和“局部變量”。
Java 基本資料類型
Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字元類型,還有一種布爾型。
整數類型
byte: |
|
short: |
|
int: |
|
long: |
|
浮點類型
float: |
|
double: |
|
字元類型
char: |
|
布爾類型
boolean: |
|
自動類型轉換
隐式類型轉換
Java中8種基本類型可以進行混合運算,不同類型的資料在運算過程中,首先會自動轉換為同一類型,再進行運算。資料類型根據占用存儲空間的大小分為高低不同的級别,占用空間小的級别低,占用空間大的級别高,自動類型轉換遵循低級到進階轉換的規則。
整型、實型(常量)、字元型資料可以混合運算。運算中,不同類型的資料先轉化為同一類型,然後進行運算。轉換從低級到進階。
低 ------------------------------------> 高 |
byte,short,char—> int —> long—> float —> double |
顯式類型轉換
當把高精度的變量的值賦給低精度的變量時,必須使用顯式類型轉換運算(又稱強制類型轉換)。
文法如下所示:(類型名)要轉換的值
例如:byte b = (byte)123;
運算符
- 算術運算符
- 關系運算符(比較運算符)
- 位運算符
- 邏輯運算符
- 指派運算符
- 其他運算符
算術運算符
Java中的算術運算符主要有+(加号)、-(減号)、*(乘号)、/(除号)和%(求餘),它們都是二進制運算符。
自增自減運算符
自增、自減運算符是單目運算符,可以放在操作元之前,也可以放在操作元之後。操作元必須是一個整型或浮點型變量。放在操作元前面的自增、自減運算符,會先将變量的值加1(減1),然後再使該變量參與表達式的運算;放在操作元後面的自增、自減運算符,會先使變量參與表達式的運算,然後再将該變量加1(減1) 。
- 自增(++)自減(–)運算符是一種特殊的算術運算符,在算術運算符中需要兩個操作數來進行運算,而自增自減運算符是一個操作數。
- 字首自增自減法(++a,–a): 先進行自增或者自減運算,再進行表達式運算。
- 字尾自增自減法(a++,a–): 先進行表達式運算,再進行自增或者自減運算
關系運算符(比較運算符)
運算符 | 描述 |
---|---|
== | 檢查如果兩個操作數的值是否相等,如果相等則條件為真。 |
!= | 檢查如果兩個操作數的值是否相等,如果值不相等則條件為真。 |
> | 檢查左操作數的值是否大于右操作數的值,如果是那麼條件為真。 |
< | 檢查左操作數的值是否小于右操作數的值,如果是那麼條件為真。 |
>= | 檢查左操作數的值是否大于或等于右操作數的值,如果是那麼條件為真。 |
<= | 檢查左操作數的值是否小于或等于右操作數的值,如果是那麼條件為真。 |
位運算符
操作符 | 描述 |
---|---|
& | 如果相對應位都是1,則結果為1,否則為0 |
| | 如果相對應位都是 0,則結果為 0,否則為 1 |
^ | 如果相對應位值相同,則結果為0,否則為1 |
〜 | 按位取反運算符翻轉操作數的每一位,即0變成1,1變成0。 |
<< | 按位左移運算符。左操作數按位左移右操作數指定的位數。 |
>> | 按位右移運算符。左操作數按位右移右操作數指定的位數。 |
>>> | 按位右移補零操作符。左操作數的值按右操作數指定的位數右移,移動得到的空位以零填充。 |
邏輯運算符
操作符 | 描述 |
---|---|
&& | 稱為邏輯與運算符。當且僅當兩個操作數都為真,條件才為真。 |
| | | 稱為邏輯或操作符。如果任何兩個操作數任何一個為真,條件為真。 |
! | 稱為邏輯非運算符。用來反轉操作數的邏輯狀态。如果條件為true,則邏輯非運算符将得到false。 |
指派運算符
操作符 | 描述 |
---|---|
= | 簡單的指派運算符,将右操作數的值賦給左側操作數 |
+ = | 加和指派操作符,它把左操作數和右操作數相加指派給左操作數 |
- = | 減和指派操作符,它把左操作數和右操作數相減指派給左操作數 |
* = | 乘和指派操作符,它把左操作數和右操作數相乘指派給左操作數 |
/ = | 除和指派操作符,它把左操作數和右操作數相除指派給左操作數 |
(%)= | 取模和指派操作符,它把左操作數和右操作數取模後指派給左操作數 |
<< = | 左移位指派運算符 |
>> = | 右移位指派運算符 |
&= | 按位與指派運算符 |
^ = | 按位異或指派操作符 |
| = | 按位或指派操作符 |
其他運算符
條件運算符(?:)
三元運算符是Java中唯一一個三目運算符,其操作元有三個,第一個是條件表達式,其餘的是兩個值,條件表達式成立時運算取第一個值,不成立時取第二個值,示例代碼如下所示:
boolean b = 20 < 45 ? true : false;
instanceof 運算符
該運算符用于操作對象執行個體,檢查該對象是否是一個特定類型(類類型或接口類型)。
instanceof運算符使用格式如下:
( Object reference variable ) instanceof (class/interface type)
如果運算符左側變量所指的對象,是操作符右側類或接口(class/interface)的一個對象,那麼結果為真。
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 類型,是以傳回真