關鍵字
關鍵字的定義和特點
定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞)
特點:關鍵字中所有字母都為小寫
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
變量的分類
·在方法體外,類體內聲明的變量稱為成員變量
·在方法體內部聲明的變量稱為局部變量。
·注意:二者在初始化值方面的異同:
同:都有生命周期
異:局部變量除形參外,需顯示初始化
整數類型:byte、short、int、long
·Java各整數類有固定的表數范圍和字段長度,不受具體OS的影響,以保證java程序的可移植性。
·Java的整數常量默認為int型,聲明long型常量須后加‘l’或‘L’
浮點類型:float、double
·與整數類型類似,java浮點類型也有固定的表數范圍和字段長度,不受具體OS影響。
·java的浮點型常量默認為double型,聲明float型常量,須后加‘f’或‘F’。
·浮點型常量有兩種表示形式:
十進制數形式:如:5.12 512.0f .512(必須由小數點)
科學計數法形式:如:5.12e2 512E2 100E-2
字符類型:char
·char 型數據用來表示通常意義上“字符”(2字節)
·字符型常量的三種表現形式:
字符常量是用單引號('')括起來的單個字符,涵蓋世界上所有書面語的字符。
Java中還允許使用轉義字符‘\’來將氣候的字符轉變為特殊字符型常量。
直接使用Unicode值來表示字符型常量:‘\uXXXX’。其中,XXXX代表一個十六進制整數。
·char類型是可以進行運算的。因為它都對應有Unicode碼。
ASCII碼
·在計算機內部,所有數據都使用二進制表示。每一個二進制位(bit)有0和1兩種狀態,因此8個二進制位就可以組合出256種狀態,這被稱為一個字節(byte)。一個字節一共可以用來表示256中不同的狀態,每一個狀態對應一個符號,就是256個符號,從00000000到11111111.
·ASCII:上個世紀60年代,美國制定了一套字符編碼,對英語字符與二進制之間的關系,做了統一規定。這被稱為ASCII碼。ASCII碼一共規定了128個字符的編碼,比如空格“SPACE”是32(二進制00100000),大寫的字符A是65(二進制01000001)。這128個符號(包括32個不能打印出來的控制符號),只占用了一個字節的后面7位,最前面的1位統一規定為0.
缺點:
不能表示所有字符。
相同的編碼表示的字符不一樣
Unicode編碼
·亂碼:世界上存在着多種編碼方式,同一個二進制數字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼。
·Unicode:一種編碼,將世界上所有的符號都納入其中。每一個符號都給與一個獨一無二的編碼,使用Unicode沒有亂碼的問題。
Unicode的缺點:Unicode只是一個符號集,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲:無法區別Unicode和ASCII:計算機無法區分三個字節表示一個符號還是分別表示三個符號
·UTF-8是在互聯網上使用最廣的一種Unicode的實現方式。
·UTF-8是一種變長的編碼方式。它可以使用1-6個字節表示一個符號,根據不同的符號二變化字節長度
·UTF-8的編碼規則:
對於單字節的utf-8編碼,該字節的最高位為0,其余 7位用來對字符進行編碼(等同於ASCII碼)。
對於多字節的UTF-8的UTF-8編碼,如果編碼包含n個字節,那么第一個字節的前n位為1,第一個字節的第n+1位為0,該字節的剩余各位用來對字符進行編碼。在第一個字節之后的所有的字節,都是最高兩位為“10”,其余6位用來對字符進行編碼。
布爾類型:boolean
·boolean類型適於邏輯運算,一般用於程序流程控制:
if條件控制語句;
while循環控制語句;
do-while循環控制語句;
for循環控制語句;
·boolean類型數據只允許取值true和false,無null。
不可以0或非0的整數替代false和true,這點和C語言不同。
基本數據類型轉換
·自動類型轉換:容量小的類型自動轉換為容量大得數據類型。數據類型按容量大小排序為:
·有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然后再進行計算。
·byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int類型。
·當把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉化為字符串類型。
強制類型轉換
·自動類型轉換的逆過程,將容量大得數據類型轉換為容量小的數據類型。使用時要加上強制轉換符(()),但可能造成精度降低或溢出,格外要注意。
·通常,字符串不能直接轉換為基本類型,但通過基本類型對應的包裝類則可以實現把字符串轉換成基本類型。
boolean類型不可以轉換為其他的數據類型。
補充:String類
·值null可以賦值給任何引用類型(類、接口、數組)的變量,用以表示這個引用類型變量中保存的地址為空。
·String類屬於引用類型,可用null賦值
·String類是一個典型的不可變類,String對象創建出來就不可能被改變。創建出的字符串將存放在數據區,保證每個字符串常量只有一個,不會產生多個副本。
進制
·對於整數,有四種表示方式:
二進制:0,1,滿2進1,以0b或0B開頭。
十進制:0-9,滿10進1
八進制:0-7,滿8進1.以數字0開頭。
十六進制:0-9及A-F,滿16進1.以0x或0X開頭表示。此處的A-F不區分大小寫。
原碼、反碼、補碼

s=s+2; ①
s+=2; ②
①和②有什么區別?
&—邏輯與 | —邏輯或 !—邏輯非
&& —短路與 || —短路或 ^ —邏輯異或
·邏輯運算符用於連接布爾型表達式,在Java中不可以寫成3<x<6,應該寫成x>3&x<6。
·“&”和“&&”的區別:
單&時,左邊無論真假,右邊都進行運算
雙&時,如果左邊為真,右邊參與運算,如果左邊為真,右邊不參與運算。
·“|”和“||”的區別同理,||表示:當左邊為真,右邊不參與運算。
·異或(^)與(|)的不同之處是:當左右都為true時,結果為false。
理解:異或 ,追求的是“異”
位運算符
·位運算是直接對二進制進行運算
三元運算符
·格式:
表達式1和表達式2為同種類型、
三元運算符與if-else的聯系與區別:
1) 三元運算符可簡化
2) 三元運算符要求必須返回一個結果
3) if后的代碼塊可有多個語句
運算符的優先級
程序流程控制
·順序結構
程序從上到下逐行地執行,中間沒有任何判斷和跳轉
·分支結構
根據條件,選擇性地執行某段代碼。
有if...else和switch兩種分支語句
·循環結構
根據循環條件,重復性的執行某段代碼。
有while、do...while、for三種循環語句
注:JDK1.5提供了foreach循環,方便的遍歷集合、數組元素。
·switch(表達式)中表達式的返回值必須是下述幾種類型之一:byte,short,char,int,枚舉,String;
·case子句中的值必須是常量,且所有的case子句中的值應是不同的;
·default子句是可任選的,當沒有匹配的case時,執行default
·break語句用來在執行完一個case分支后使程序跳出switch語句塊;如果沒有break,程序會順序執行到switch結尾
switch和if語句的對比
如果判斷的具體數值不多,而且符合byte、short、int、char這四種類型。雖然兩個語句都可以使用,建議使用switch語句。因為效率稍高。
其他情況:對區間判斷,對結果為boolean類型判斷,使用if,if的使用范圍更廣。
循環結構
·循環語句功能
在某些條件滿足的情況下,反復執行特定代碼的功能
·循環語句的四個組成部分
初始化部分(init_statement)
循環條件部分(test_exp)
循環體部分(body_statement)
迭代部分(alter_statement)
·循環語句分類
for循環
while循環
do/while循環
return 直接結束整個方法
continue 跳出當次循環
break 跳出循環
特殊流程控制語句說明
·break只能用於switch語句和循環語句中。
·continue只能用於循環語句中。
·二者功能類似,但continue是終止本次循環,break是終止本層循環。
·break、continue之后不能有其他的語句,因為程序永遠不會執行其后的語句。
·標號語句必須緊接在循環的頭部。標號語句不能用在分循環語句的前面。