Java 基本語法(1)


關鍵字

關鍵字的定義和特點

  定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞)

  特點:關鍵字中所有字母都為小寫

 

Java保留字:現有Java版本尚未使用,但以后版本可能會作為關鍵字使用。自己命名標記符時要避免使用這些保留字 
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
 
標識符
·標識符:
  Java對各種變量、方法和類等要素命名時使用的字符序列稱為標識符
  凡是自己可以起名字的地方都叫標識符。
·定義合法標識符規則:
  由26個英文字母大小寫,0-9,_或$組成
  數字不可以開頭
  不可以使用關鍵字和保留字,但能包含關鍵字和保留字
  Java中嚴格區分大小寫,長度無限制
  標識符不能包含空格
·注意:在起名字時,為了提高閱讀性,要盡量有意義,“見名知意”。
Java中的名稱命名規范:
  包名:多單詞組成時所有字母都小寫:xxxyyyzzz
  類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz
  變量名、方法名:多單詞時,第一個單詞字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
  常量名:所有字母都大寫。多單詞時每個單詞用下划線連接:XXX_YYY_ZZZ
變量
·變量的概念:
  內存中的一個存儲區域
  該區域有自己的名稱(變量名)和類型(數據類型)
  Java中每個變量必須先聲明,后使用
  該區域的數據可以在同一類型范圍內不斷變化
·使用變量注意:
  變量的作用域:一對{}之間有效
  初始化值
·定義變量的格式:數據類型 變量= 初始化值
·變量時通過使用變量名來訪問這塊區域的
 

 

 

變量的分類

 

·在方法體外,類體內聲明的變量稱為成員變量

·在方法體內部聲明的變量稱為局部變量。

·注意:二者在初始化值方面的異同:

  同:都有生命周期

  異:局部變量除形參外,需顯示初始化

整數類型: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不區分大小寫。

 原碼、反碼、補碼

·所有數字在計算機底層都以二進制形式存在。
·計算機以補碼的形式保存所有的整數。
    正數的原碼、反碼、補碼都相同
    負數的補碼是其反碼加1。
·原碼:直接將一個數值換成二進制數。
·反碼:是對原碼按位取反,只是最高位(符號位)確定為1。
·Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當是long類型時,二進制默認占64位,第64位是符號位
 
運算符
運算符是一種特殊的符號,用以表示數據的運算、賦值和比較等。
·算術運算符
·賦值運算符
·比較運算符
·邏輯運算符
·位運算符
·三元運算符
 
 
算術運算符的注意問題
·如果負數取模,可以把模數負號忽略不計,但被模數是負數則不可忽略。此外,取模運算的結果不一定總是整數。
·對於除號“/”,它的整數除和小數除室友區別的:整數之間做除法時,只保留整數部分而舍棄小數部分。
·“+”除字符串相加功能外,還能把非字符串轉換成字符串
 
賦值運算符
 
·符號:=
  當“=”兩側數據類型不一致時,可以使用自動類型轉換或使用強制類型轉換原則進行處理。
  支持連續賦值
·擴展賦值運算符: +=,-=,*=,/=,%=
 
思考1: short s = 3;

                        s=s+2;  ①

                        s+=2;    ②

                     ①和②有什么區別?
 
比較運算符
 
  比較運算符的結果都是boolean型,也就是要么是true,要么是false。
  比較運算符“==”不能誤寫成“=”
 
邏輯運算符

&—邏輯與         | —邏輯或         !—邏輯非

&& —短路與      || —短路或        ^ —邏輯異或

 

·邏輯運算符用於連接布爾型表達式,在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之后不能有其他的語句,因為程序永遠不會執行其后的語句。

·標號語句必須緊接在循環的頭部。標號語句不能用在分循環語句的前面。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM