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" 陳述句可完成此功能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541094.html
標籤:其他
上一篇:每日演算法之把二叉樹列印成多行
