JavaSE:基礎語法 註釋 Java中的註釋有三種: 單行註釋:只能註釋當前行,以//開始,直到行結束 //輸出HelloWorld! 多行註釋:註釋一段文字,以/ * 開始以 * / 結束! /* 這是我們Java程式的主入口, main方法也是程式的主線程。 */ 文檔註釋:用於生產A ...
JavaSE:基礎語法
註釋
Java中的註釋有三種:
- 單行註釋:只能註釋當前行,以//開始,直到行結束
//輸出HelloWorld!
- 多行註釋:註釋一段文字,以/ * 開始以 * / 結束!
/* 這是我們Java程式的主入口, main方法也是程式的主線程。 */
-
文檔註釋:用於生產API文檔,配合JavaDoc。
/**再按回車鍵生成文檔註釋
平時我們編寫代碼,在代碼量比較少的時候,我們還可以看懂自己寫的,但是當項目結構一旦複雜起
來,我們就需要用到一個註釋了,註釋就類似於我們上學時候寫的筆記,我們看著筆記就知道自己寫的
什麼東西了!平時我們一定要養成編寫註釋的習慣。
標識符
Java語言中,對於變數,常量,函數,語句塊也有名字,我們統統稱之為Java標識符。標識符是用來給類、對象、方法、變數、介面和自定義數據類型命名的。
關於 Java 標識符,有以下幾點需要註意:
-
所有的標識符都應該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始
-
首字元之後可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數字的任何字元組合
-
不能使用關鍵字作為變數名或方法名。
-
標識符是大小寫敏感的
-
合法標識符舉例:age、$salary、_value、__1_value
-
非法標識符舉例:123abc、-salary、#abc
關鍵字
Java關鍵字是對Java編譯器有特殊含義的字元串,是編譯器和程式員的一個約定,程式員利用關鍵字來告訴編譯器其聲明的變數類型、類、方法特性等信息。Java語言共定義瞭如下所示的關鍵字。
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
關鍵字 | 含義 |
---|---|
abstract | 表明類或者成員方法具有抽象屬性 |
assert | 斷言,用來進行程式調試 |
boolean | 基本數據類型之一,聲明布爾類型的關鍵字 |
break | 提前跳出一個塊 |
byte | 基本數據類型之一,位元組類型 |
case | 用在switch語句之中,表示其中的一個分支 |
catch | 用在異常處理中,用來捕捉異常 |
char | 基本數據類型之一,字元類型 |
class | 聲明一個類 |
const | 保留關鍵字,沒有具體含義 |
continue | 回到一個塊的開始處 |
default | 預設,例如,用在switch語句中,表明一個預設的分支。Java8 中也作用於聲明介面函數的預設實現 |
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](https://baike.baidu.com/item/IEEE 754?fromModule=lemma_inlink)算術規範 |
super | 表明當前對象的父類型的引用或者父類型的構造方法 |
switch | 分支語句結構的引導詞 |
synchronized | 表明一段代碼需要同步執行 |
this | 指向當前實例對象的引用 |
throw | 拋出一個異常 |
throws | 聲明在當前定義的成員方法中所有需要拋出的異常 |
transient | 聲明不用序列化的成員域 |
try | 嘗試一個可能拋出異常的程式塊 |
void | 聲明當前成員方法沒有返回值 |
volatile | 表明兩個或者多個變數必須同步地發生變化 |
while | 用在迴圈結構中 |
數據類型
Java是一種強類型語言,每個變數都必須聲明其類型。
強弱類型語言:
強類型語言:也稱為強類型定義語言。要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用。也就是說,一旦一個變數被指定了某個數據類型,如果不經過轉換,那麼它就永遠是這個數據類型了。安全性高,運行效率相對較慢,魚和熊掌不可兼得!Java、.NET、C++等都是強制類型定義的。
弱類型語言:也稱為弱類型定義語言。與強類型定義相反。像vb,php等就屬於弱類型語言· 在VBScript中,可以將字元串‘12’和整數3進行連接得到字元串‘123’,也可以把它看成整數123,而不需要顯示轉換。
Java的數據類型分為兩大類:基本類型(primitive type)和引用類型 (reference type)
基本數據類型:
數值類型:
整數類型:
byte占1個位元組 範圍:-128-127
short占2個位元組 範圍:-32768-32767
int占4個位元組 範圍:-2147483648-2147483647
long占8個位元組 範圍:-9223372036854775808-9223372036854775807
浮點類型:
float占4個位元組
double占8個位元組
字元類型:
char占2個位元組
boolean類型:
占一位只有true或者false兩個
引用類型:
類,介面,數組
註意:
字元串String類型也是一個類也屬於引用類型。引用類型的大小統一為4個位元組記錄其引用對象的地址。java語言的整數類型預設為int浮點類型預設double。
浮點數使用總結:
-
預設是double。
-
浮點數存在舍入誤差,很多數字不能精確表示。如果需要進行不產生舍入誤差的精確數字計算,需要使用BigDecimal類。
-
避免比較中使用浮點數。
類型轉換
由於Java是強類型語言,所以要進行有些運算的時候的,需要用到類型轉換。
數據類型轉換必須滿足如下規則:
-
不能對boolean類型進行類型轉換。
-
不能把對象類型轉換成不相關類的對象。
-
在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。
-
轉換過程中可能導致溢出或損失精度,例如:
int i =128; byte b = (byte)i;
因為 byte 類型是 8 位,最大值為127,所以當 int 強制轉換為 byte 類型時,值 128 時候就會導致溢出。
-
浮點數到整數的轉換是通過捨棄小數得到,而不是四捨五入。
(int)23.7 == 23; (int)-45.89f == -45
自動類型轉換
自動類型轉換:容量小的數據類型可以自動轉換為容量大的數據類型。
例如: short數據類型的位數為16位,就可以自動轉換位數為32的int類型,同樣float數據類型的位數為32,可以自動轉換為64位的double類型。
強制類型轉換
強制類型轉換的語法格式: (type)var ,運算符“()”中的type表示將值var想要轉換成的目標數據類型。 條件是轉換的數據類型必須是 相容的。
註意:當將一種類型強制轉換成另一種類型,而又超出了目標類型的表示範圍,就會被截斷成為一個完全不同的值,溢出。
變數
變數是什麼:就是可以變化的量!
我們通過變數來操縱存儲空間中的數據,變數就是指代這個存儲空間!空間位置是確定的,但是裡面放置什麼值不確定!
這就好像我們家裡有一個大衣櫃,裡面有十分多的小格子,我們給格子上貼上標簽,放衣服,放鞋子,放手錶等等,此時我們知道了哪裡該放什麼,但是,我們並不知道裡面到底放的是什麼牌子的鞋子,是衣服還是褲子。那個標簽就相當於我們的變數,我們給他起了個名字,但是裡面要放什麼需要我們自己去放。
Java是一種強類型語言,每個變數都必須聲明其類型。
註意事項:
-
每個變數都有類型,類型可以是基本類型,也可以是引用類型。
-
變數名必須是合法的標識符。
-
變數聲明是一條完整的語句,因此每一個聲明都必須以分號結束。
變數作用域
變數根據作用域可劃分為三種:
-
類變數(靜態變數: static variable):獨立於方法之外的變數,用 static 修飾。
-
實例變數(成員變數:member variable):獨立於方法之外的變數,不過沒有 static 修飾。
-
局部變數(lacal variable):類的方法中的變數。在使用前必須先聲明和初始化(賦初值)。局部變數沒有預設值,所以局部變數被聲明後,必須經過初始化,才可以使用。
常量
常量(Constant):初始化(initialize)後不能再改變值!不會變動的值。常量名一般使用大寫字元。
註意命名規範:
-
所有變數、方法、類名:見名知意
-
類成員變數:首字母小寫和駝峰原則 : monthSalary
-
局部變數:首字母小寫和駝峰原則
-
常量:大寫字母和下劃線:MAX_VALUE
-
類名:首字母大寫和駝峰原則: Man, GoodMan
-
方法名:首字母小寫和駝峰原則: run(), runRun()
運算符
Java 語言支持如下運算符:
-
算術運算符: +,-,*,/,%,++,--
-
賦值運算符 =
-
關係運算符: >,<,>=,<=,==,!= instanceof
-
邏輯運算符: &&,||,!
-
位運算符: &,|,^,~ , >>,<<,>>>
-
條件運算符 ?:
-
擴展賦值運算符:+=,-=,*=,/=
註意:
在整數運算中:如果兩個操作數有一個為Long, 則結果也為long沒有long時,結果為int。即使操作數全為shot,byte,結果也是int。
在浮點數運算中:如果兩個操作數有一個為double, 則結果為double.只有兩個操作數都是float, 則結果才為float。
在取模運算中:負數%負數=負數;負數%正數=負數;正數%負數=正數;
自增自減運算中:
public static void main(String[] args) {
int a = 3; int b = a++; //執行完後,b=3。先給b賦值,再自增。
int c = ++a; //執行完後,c=5。先自增,再給b賦值
}
在邏輯運算中:邏輯與和邏輯或採用短路的方式(&& ||)。從左到右計算,如果確定值則不會再計算下去。在兩個操作數都為true時,結果才為true,但是當得到第一個操作為false時,其結果就必定是false,這時候就不會再判斷第二個操作了。
邏輯與(&&)只要有一個為false, 則直接返回false。
邏輯或(||)只要有一個為true, 則直接返回true。
在位運算中:右移一位相當於除2取商。左移一位相當於乘2。
在字元串連接運算中:“+” 運算符兩側的操作數中只要有一個是字元串(String)類型,系統會自動將另一個操作數轉換為字元串然後再進行連接。
在三目條件運算中:x ? y : z 其中x為boolean類型表達式,先計算x的值,若為true,則整個三目運算的結果為表達式y的值,否則整個運算結果為表達式z的值。
包機制
存在這樣一個問題:當定義了多個類的時候,可能會發生類名的重覆問題。
解決方式:在java中採用包機制處理開發者定義的類名衝突問題。
就好比我們平時的用電腦,一個文件夾下不能存在同名的文件,我們要是有這樣的需求,但是又不想換名字,我們就可以考慮使用新建一個文件夾來存放!在我們的Java中也是這樣的。
為了能夠使用某一個包的成員,我們需要在 Java 程式中明確導入該包。使用 "import" 語句可完成此功能。