一、標識符
java對各種變量、方法和類等要素命名時使用的字符序列成為標識符;通俗點,凡是自己可以起名字的地方都叫標識符,都遵守標識符的規則
1.標識符命名規則:
1)標識符由字符、下划線、美元符或數字組成。
2)標識符應以字符、下划線、美元符開頭
3)java標識符大小寫敏感,長度無限制
4)約定俗成,java標識符選取應該注意“見名知意”且不能與java語言的關鍵字(eclipes中帶顏色的基本都是關鍵字)重名
合法的標識符 |
不合法的標識符 |
HelloWord | class |
DataClass | DataClass# |
_983 | 98.3 |
$6s5_c7 | Hello World |
二、關鍵字
java中一些賦以特定含義,用作專門用途的關鍵的字符串成為關鍵字(keyword);且大多數編輯器都會將關鍵字用特殊方式標出
所有java關鍵字都是小寫英文
一些常用關鍵字
abstract | default | if | private | this |
boolean | do | implements | protected | throw |
break | double | import | public | throws |
byte | else | instanceof | return | transient |
case | extends | int | short | try |
catch | final | interface | static | void |
char | finally | long | stricrfp | volatile |
class | float | native | super | while |
const | for | new | switch | null |
continue | goto | package | stnchronized |
三、java的基本數據類型
1.java常量
java的常量值用字符串表示,區分為不同的數據類型。如:
整型常量:1234
實型常量:3.14
字符常量:’a’
邏輯常量:true、false
字符串常量:”HelloWorld”
注意:
1)區分字符常量和字符串常量
字符常量是單引號引起來的單個,字符串常量是雙引號引起來的不限長度
由於java采用Unicode編碼,每個字符占兩個字節,因而可用天十六進制編碼形式表示,當然也可以用一個中文表示(單個中文占用兩個字節)
2)”常量”這個名次還會用在另外其他語境中表示值不可變的變量
2.java變量
java變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域。
java程序中每一個變量都屬於特定的數據類型,在使用前必需對其進行聲明,聲明格式為:
type varName [=value]
例如:
int i =100;
foloat f=12.3f;
double d1,d2,d3=0.123;(聲明了三個變量,其中d1,d2是默認值,d3=0.123)
String s=”hello”
從本質上講,變量其實是內存中的一小塊區域,使用變量名來訪問這塊區域,因此,每一個變量使用前必需先聲明,然后必需進行賦值,才能使用。
1)java變量分類
按被聲明的位置划分:
局部變量:方法或語句塊內部定義的變量,只能在被定義的方法或語句塊內使用
成員變量:方法外部、類的內部定義的變量,可以在整個類中使用,包括類里的方法或語句塊內也可以使用
注意:類外面是不能有變量的聲明的
按所屬的數據類型划分:
基本數據類型變量
引用數據類型變量
四、運算符
java語言支持如下運算符:
算術運算符:+ - * / % ++ --
關系運算符:> < >= <= == !=
邏輯運算符:! & | ^ && ||
位運算符:& | ^ ~ >> << >>>
賦值運算符:=
拓展賦值運算符:+ = -= *= /=
字符串鏈接運算符:+
三目條件運算符 ? :
1.算數運算符
注意:
1)
位運算符中的!、&、|、^跟羅技運算符相同,只是位運算符是對變量的二進制進行操作,我個人是用不到的,所以不在這里多做介紹
2)
++(—)
在前時先運算再取值
在后時先取值再運算
2.邏輯運算符
例如:
3.擴展賦值運算符
4.字符串連接符
“ + ”運算符兩側的操作數中只要有一個是字符串類型,系統會自動將另一個操作數轉換為字符串然后進行連接,例如:
4 + 5 = 9
4 + “ab” = “4ab”
5.三目條件運算符
語法格式:
x ? y : z
其中x為boolean類型表達式,先計算x的值,若為true,則整個三目運算的結果為表達式y的值,否則整個運算結果為表達式z的值。
五、表達式和語句
1.表達式
表達式是符合一定語法規則的運算符和操作數的序列,例如:
a
5.0 + a
(a – b) * c – 4
i < 30 && i %10 !=0
1)表達式的類型和值
表達式中的操作數進行運算得到的結果稱為表達式的值
表達式值的數據類型即為表達式的類型
2)表達式的運算順序
應按照運算符的優先級從高到低的順序進行
優先級相同的運算符按照實現約定的結合方式進行
我個人覺得運算順序這塊是可以忽略的,首先我的邏輯思維能力不是特別強,另外我的記性也不是特別好,所以如果我需要在表達式中區分優先級的話我會選擇加括號。但是我覺得對於一些比較復雜且關鍵的邏輯運算,如果個人邏輯運算能力加記憶都比較好可以保證不出錯的話,善用羅技運算符優先級未嘗不是一種不讓別人看懂你代碼copy的手段。算是一種小小的防護吧,反正我這種人是不會去嘗試分析這種代碼的,太累~~
2.分支(條件)語句
if
if … else
if … else if … else if
if … else if … else if …else
switch () {
case xx:
……………
case xx:
……………
default:
……………
}
1.java中switch語句只能探測int類型的值(char類型的值也可以,因為他可以轉換城int類型)
2.小心case穿透,所以最好與break連用
3.多個case可以連用,如下的示例代碼也可以這樣寫(當i=1,2,18都會輸出18):
示例:
3.循環語句
for(…;…;…){……}
while(…){……}先判斷再執行大括號里面的內容,然后再判斷是否要繼續執行
do{……} whille(…); 先執行大括號里面的內容再判斷是否要繼續執行
4.break & continue語句
break語句用於終止某個語句塊的執行。用在循環體語句中么可以強行退出循環
continue語句用在循環體語句中,用於終止某次循環過程,跳過循環中continue語句下面未執行的循環,開始下一次循環過程
八、方法
java的方法類似於其他語言的函數,是一段用來完成特定功能的代碼片段,聲明格式:
[修飾符1 修飾符2 …] 返回值類型 方法名 (形式參數列表) {
java語句
}
形式參數:在方法被調用時用於接受外界輸入的數據
實參:調用方法時實際純給方法的數據
返回值:方法在執行完畢后返回給調用他的環境的數據
返回值類型:實現約定的返回值的數據類型,如無返回值,必需給出返回值類型void
java語言中調用方法:對象名.方法名(實參列表)
實參的數目、數據類型和次序必需和所調用方法聲明的形參列表匹配
return語句終止方法的運行並指定要返回的數據
java中進行函數調用傳遞參數時,遵循值傳遞的原則:
基本類型傳遞的是該數據值本身,引用累心美國傳遞的是對對象的引用,而不是對象本身
例子中的方法1,前面定義的數據類型為void, 所以方法中不能有return返回值,方法4中因為有return返回值,所以前面必需定義為返回值的類型,也就是m4前面那個int
九、遞歸調用
遞歸調用是指在方法執行過程中出現該方法本身的調用
先看一個例子,這是一個簡單的遞歸調用:
簡單分析下:
1.首先main主方法中輸出字符串,內容是test方法當參數等於5的時候的返回值
2.然后將參數5傳入test方法,返回值是:5 * test(4)
3.再次將參數4傳入test方法中,返回值是:4 * test(3)
4.再將參數3傳入test方法中,返回值是:3 * test(2)
5.再講參數2傳入test方法中:返回值是:2 * test(1)
6.再將參數1傳入到方法中:返回值是:1
然后程序開始往回走,返回值傳入test(1)中得到2*1
再往回走,將剛剛得到的2*1傳入到test(2)中得到3*2*1
還要往回走,將剛剛得到的3*2*1傳入到test(3)中得到4*3*2*1
還要往回走,將剛剛得到的4*3*2*1傳入到test(4)中也就是test(5)的返回值,得到5*4*3*2*1
最后將test5的返回值傳入到我們的主方法輸出於語句中5*4*3*2*1=120,那么我們的輸出語句輸出的應該為120
這就是簡單的遞歸調用的例子了
再來看一個例子:
非遞歸的寫法:
請自行領悟