複習_比較實用的Java基本語法

  • Java的基本符號(token)

  Java的單詞符號有五種:關鍵字、標識符、常量、分隔符和操作符。
  Java的字符集
  Java 採用一種稱爲unicode的字符集,該字符集合是一種新的編碼標準,與常見的ASCII碼的區別在於:
  unicode使用16位二進制而不是8位來表示一個字符。
  unicode字符集中增加了許多非拉丁語字符。

  •   標識符

  Java標識符必須以字母,數字,美元符號"$",下劃線"_"組成,標識符第一個字符不可用數字。
  Java語言對字母的大小寫是敏感的,在語法中嚴格區分大小寫。

  •   關鍵字

  關鍵字是爲特定目的而保留的保留字,程序員不要將關鍵字作爲自己的標識符。 Java的關鍵字有:
  abstract boolean break byte case catch char class continue do double else extends false
  find finally float for implements import instanceof int interface long native new null
  package private public return short static super switch synchronized this throw true try void while

  •   常量

  常量可分爲整型常量,浮點數常量,字符常量,字符串常量和布爾常量。
  整型常量:可分爲int型和long型兩種,缺省爲int型,long型數值後加L。 整型常量可用10、8和16進製表示。
  如:123(十進制) 052(八進制) 0x3c(十六進制)
  浮點數常量:有單精度和雙精度之分,缺省爲雙精度,單精度在數值後加f。另外,浮點數常量也可用普通計數法和科學計數法來表示。
  如:1.23f 1.1E-2
  字符常量:用' '括起來的一個字符。如'a','H'。
  使用16位的unicode字符集。
  Java 語言可使用轉義字符'/'來標記特殊字符。如'/n'表示換行符。
  字符串常量用" "包括,如"Hello World"。
  布爾常量只有兩個值,true和false。
  分隔符
  分隔符起分隔單詞符號的作用。包括分號";"、花括號"{}"和空白符號。

  •   Java的註釋

  Java的註釋有三種形式:
  單行註釋
  如://Comment on one line
  多行註釋
  如:/* Comment on one
  or more lines */
  文檔註釋
  如:/** Document
  Comment */

  •   Java的數據類型和變量

  Java的基本數據類型
  Java的基本數據類型有8種,見下表:
  數據類型 類別 寬度(位) 取值範圍
  boolean 邏輯型 1 true/false
  char 文字型 16
  byte 整數類型 8 -27 ~ 27-1
  short 整數類型 16 -215 ~ 215-1
  int 整數類型 32 -231 ~ 231-1
  long 整數類型 64 -263 ~ 263-1
  float 浮點型 32
  double 浮點型 64
  Java的變量
  Java的變量在使用前必須聲明。如 int radios, color;
  Java爲所有基本數據類型的變量作了預定義(預設置的值)。如
  類型名 boolean char byte short int long float double
  預置值 false '/u0000' (byte)0 (short)0 0 0L 0.0f 0.0

  •   數據類型的轉換

  Java是一種強類型的語言,在賦值和參數傳遞時,都要求類型的匹配。類型轉換有三種情況:自動轉換、強制轉換和使用類的方法轉換。
  自動轉換:往往低精度類型到高精度類型能自動轉換。
  如: byte b1=10, b2=20;
  int b3=b1+b2;
  強制轉換:高精度類型到低精度類型必須強制轉換。這時數據可能會丟失部分信息。
  如:char key=(char)(12+55) //變量key被賦值爲unicode值爲67的字符'c'
  方法轉換:如
  String str = "123";
  int a = Integer.parseInt(str);
  使用Integer類的方法parseInt將String轉換爲對應的整數。

  •   Java編程的習慣約定

  爲了提高程序的可讀性,Sun公司推薦在Java編程時使用以下的習慣約定:
  類名(classes):有一個或若干個名詞組成,開頭大寫,名詞間的區分也用大寫,其他小寫。
  如:class AccountBook
  class ComplexVariable
  接口(Interfaces):規則同類名。
  如:Interface Account
  方法(methods): 由一個或多個動詞組成,開頭小寫,動詞間區分用大寫,其他小寫。
  如:balanceAccount()
  變量:小寫字母開頭,單詞間用大寫字母分隔
  如:currentCustomer
  常量:所有字母大寫,單詞間用下劃線區分
  如:MAXIMUM_SIZE

  •   Java的操作符

  根據操作對象的個數操作符可分爲一元、二元或三元操作符。根據操作符的功能,又可分爲算術、邏輯、關係等操作符。
  算術操作符
  一元: + - ++ --
  二元: + - * / %
  值得注意的是 ++ 和-- 操作符,
  如:int a,x=1,y=5;
  a = ++x;b=y++;
  此時a的值爲2(先加1,後賦值),b的值爲5(先賦值,後加1)。
  二元操作符兩側的操作對象數據類型不同時,先自動進行類型轉換,再進行操作。

  • 賦值操作符與複合賦值操作符

  可將 變量 = 變量 op 表達式
  寫成 變量 op = 表達式
  如:x+=20 與 x=x+20 結果一致,但更簡潔。
  注意:= 與 = = 的不同。

  •   位操作符和移位操作符

  位操作符
  &(按位與) |(按位或) ^(按位異或)
  移位操作符
  E<  E>>n 右移n位,空位用原最高位的位值補足,相當於E/2
  E>>>n 右移n位,空位補0
  關係操作符
  關係操作符共六個:
  >(大於) >=(大於等於) <(小於)<=(小於等於) !=(不等於) = =(相等)
  關係操作符的結果爲boolean型數據(true或false)。
  注:= = 操作符只有在比較雙方均完全一致時,其值爲true,如比較的是兩個對象,即使兩個對象的內容相同,結果也爲false,
  只有這兩個對象爲同一對象時才爲true。
  邏輯操作符
  邏輯操作符的操作對象和結果均爲boolean型,共六個:
  !(邏輯非) && (邏輯與) ||(邏輯或)
  ^(邏輯並或) & (邏輯與) | (邏輯或)
  按位與'&'也可作爲邏輯與使用,但未作優化,而'&&'操作符是經過優化的。對'|'操作符也類似。
  其他操作符
  條件操作符 E1?E2:E3
  表達式E1若成立,執行表達式E2,否則執行E3。
  逗號操作符
  ","可用於分隔語句。
  如 int x,y;
  for (x=0,y=0;x<10;x++) {...};
  操作符的優先級和結合規則

  •   優先級:

  一元 〉算術 〉移位 〉關係 〉按位 〉邏輯 〉三元 〉(複合)賦值 〉逗號
  結合規則:
  除一元、三元和賦值操作符是自右至左結合外,其他均自左至右結合。
  語句的分類
  Java語句按是否改變運行的狀態可分爲執行語句(如表達式語句)和非執行語句(如聲明語句)。任何語句的末尾都以“;”結束。
  執行語句按其組成可分三類:
  空語句
  只有一個語句結束符“;” ,無任何內容。
  基本語句(單語句)
  獨立的、完整的不能再分割爲更小的可執行單元。
  複合語句(塊語句)
  包含在{ }內的一條或若干條語句。

  •   Java的基本語句的結構可分爲4類:

  (1)順序結構語句 (2)分支語句 (3)循環語句 (4)例外處理語句
  後三種語句又稱爲流控制語句,我們將主要介紹分支語句和循環語句,而例外處理語句包括try、catch、finally以及throw語句。
  這些語句是Java所特有的。我們將在後面作專門的介紹。
  分支語句
  分支語句包括if-else, break, switch, return等語句。分支語句提供了一種控制機制,使得程序可以跳過一些語句,轉去執行特定的語句。
  條件語句 if-else.
  if-else語句根據判定條件的真假來執行兩種操作中的一種,其格式爲:
  if (boolean-expression)
  statement1;
  else
  statement2;
  其中,要注意的有:
  布爾表達式boolean-expression是任意一個返回布爾型數據的表達式(這比C、C++的限制要嚴格)。
  每個單一的語句後都必須有分號。
  語句statement1, statement2可以是複合語句,這時要用花括號{}。{}外面不加分號。
  else子句是任選的。
  若布爾表達式的值爲true,則程序執行statement1,否則執行statement2。
  if-else語句的一種特殊形式爲:
  if (expression1){
  statement1
  } else if (expression2){
  statement2
  }……
  }else if (expressionN){
  statementN
  }
  else子句不能單獨作爲語句使用,它必須和if配對使用。else總是與離它最近的if配對。可以通過使用花括號{}來改變配對關係。
  例3.1: 比較兩個數的大小,並按從小到大的次序輸出。

public class CompareTwo{
  public static void main (String args[]){
  double d1=23.4;
  double d2=35.1;
  if (d2>=d1)
  System.out.println(d2+">="+d1);
  else
  System.out.println(d1+">="+d2);
  }
  }
  例3.2:判斷某一年是否爲閏年。
  閏年的條件是符合下面二者之一: ①能被4整除,但不能被100整除; ②能被400整除。
  public class LeapYear{
  public static void main (String args[]){
  int year=1989; //method1
  if ((year%4==0 && year0!=0) || (year@0==0))
  System.out.println(year+"is a leap year.");
  else
  System.out.println(year+"is not a leap year.");
  year=2000; //method2
  boolean leap;
  if (year%4 != 0)
  leap=false;
  else if (year0 != 0)
  leap=true;
  else if (year@0 != 0)
  leap=false;
  else
  leap=true;
  if(leap==true)
  System.out.println(year+" is a leap year.");
  else
  System.out.println(year+"is not a leap year.");
  }
  }
  該例中,方法1用一個邏輯表達式包含了所有的閏年條件,方法2使用了if-else語句的特殊形式。
  多分支語句switch
  switch語句是一種多分支選擇語句,它可根據switch中表達式的值,來執行多個操作中的一個,它的一般格式如下:
  switch (expression){
  case value1: statement1;
  break;
  case value2: statement2;
  break;
  …………
  case valueN: statemendN;
  break;
  [default: defaultStatement;]
  }
  表達式expression可以返回任一簡單類型的值(如整型、字符型),多分支語句把表達式返回的值與每個case子句中的值(一個常量)相比。
  如果匹配成功,則執行該case子句後的語句序列。
  default子句是任選的。當表達式的值與任一case子句中的值都不匹配時,程序執行default後面的語句。如果表達式的值與任一case子句
  中的值都不匹配且沒有default子句,則程序不做任何操作,直接跳出switch語句。
  break語句用來在執行完一個case分支後,使程序跳出switch語句,即終止switch語句的執行。
  switch語句的功能可以用if-else來實現,但在某些情況下,使用switch語句更簡煉,且程序的執行效率提高。
  例3.3 根據考試成績的等級打印出百分制分數段。
  public class GradeLevel {
  public static void main(String args[]){
  System.out.println("/nOutPut is:");
  char grade='C'; //normal use
  switch (grade){
  case 'A': System.out.println(grade+"is 85~100");
  break;
  case 'B': System.out.println(grade+"is 70~84");
  break;
  case 'C': System.out.println(grade+"is 60~69");
  break;
  case 'D': System.out.println(grade+"is <60");
  break;
  default: System.out.println("inputerror");
  }
  }
  }
  break語句
  在switch語中,break語句用來終止switch語句的執行。使程序在switch語句後的第一個語句開始執行。
  在Java中,可以爲每個代碼塊加一個括號。一個代碼塊通常是用花括號{}括起來的一段代碼。加標號的格式如下:
  BlockLabel: {codeBlock}
  break語句的第二種使用情況就是跳出它所指定的塊,並從緊跟該塊的第一條語句處執行。其格式爲: break BlockLabel;
  例如:
  a: {…… //標記代碼塊a
  b: {…… //標記代碼塊b
  c: {…… //標記代碼塊c
  break a;
  ……//will not be executed
  }
  ……//will not be executed
  }
  ……//will not be executed
  }
  …… //execute from here
  與C、C++不同, Java中沒有goto語句來實現任意的跳轉, 因爲goto語句破壞程序的可讀性, 而且影響編譯的優化。Java用break來實現goto語句所特有的一些功能。
  返回語句return
  return語句用於從當前執行的方法中退出, 並返回到調用該方法的語句處繼續程序的執行。返回語句有兩種格式:
  return expression
  返回一個值給調用該方法的語句, 返回值的數據類型必須與方法聲明中的返回值類型一致。可以使用強制類型轉換來使類型一致。
  return
  當方法說明中用void聲明返回類型爲空時, 可以使用這種格式, 它不返回任何值。不帶參數的return語句有時可省略。
  return語句通常用在一個方法體的最後。
  循環語句
  循環語句包括 while, do-while, for, continue 等語句。循環語句的作用是反覆執行一段代碼,直到滿足循環終止條件爲止,
  一個循環一般應包括四部分內容:
  初始化部分(initialization): 用來設置循環的一些初始條件,計數器清零等。
  循環體部分(body): 這是反覆循環的一段代碼,可以是單一的一條語句,也可以是複合語句。
  迭代部分(iteration): 這是在當前循環結束,下一次循環開始前執行的語句,常常用來使計數器加1或減1。
  終止部分(termination): 通常是一個布爾表達式,每一次循環要對該表達式求值,以驗證是否滿足循環終止條件。
  下面分別介紹Java中的while語句,do-while語句和for語句。
  while語句
  while語句的一般格式爲:
  [初始化]
  while (條件表達式E){
  語句S; //循環體
  }
  當條件表達式E的值爲true時,循環執行花括號中的語句S。S中包括迭代部分。
  while語句首先計算條件表達式E是否成立,當條件成立(true)時,纔去執行循環中的語句。所以有可能循環體一次也不執行。
  do-while語句
  do-while語句的一般格式爲:
  [初始化]
  do {
  語句S; //循環體
  } while (條件表達式E);
  do-while語句首先執行循環體, 然後再計算終止條件, 若結果爲true, 則循環執行語句S, 直到條件表達式E的結果爲false。
  與while語句不同的是, do-while語句的循環體至少執行一次。

 

for語句
  for語句的一般格式爲:
  for (初始表達式; 條件表達式; 迭代表達式) {
  語句S; //循環體
  }
  for語句執行時,首先執行初始化操作,然後判斷終止條件是否滿足,如果滿足,則執行循環體中的語句,最後執行迭代部分。
  完成一次循環後,重新判斷終止條件。
  可以在for語句的初始化部分聲明變量,它的作用域爲整個for語句。
  for語句通常用來執行循環次數確定的情況(如對數組元素進行操作)。
  在初始化部分和迭代部分可以使用逗號語句來分隔多個操作。例如:
  for (i=0,j=10; i<j; i++,j--) {
  ……
  }
  continue語句
  continue語句用來結束本次循環, 跳過循環體中下面尚未執行的語句, 接着進行終止條件的判斷, 以決定是否繼續循環。
  也可以用continue跳轉到括號指明的外層循環中,這時的格式爲
  continue outerLable;
  例3.4:下例分別用while、do-while和for語句實現累計求和。
  public class Sum{
  public static void main(String args[]){
  System.out.println("/n**while statement**");
  int n=10,sum=0; ∥initialization
  while (n>0){ ∥termination
  sum+=n; ∥body
  n--; ∥iteration
  }
  System.out.println("sum is"+sum);
  System.out.println("/n**do_while statement**");
  n=0; ∥initialization
  sum=0;
  do{
  sum+=n; ∥body
  n++; ∥iteration
  } while(n<=10); ∥termination
  System.out.println("sum is"+sum);
  System.out.println("/n**for statement**");
  sum=0;
  for (int i=1;i<=10;i++){
  sum+=i;
  }
  System.out.println("sum is"+sum);
  }
  }
  可以從中來比較這三種循環語句,從而在不同的場合選擇合適的語句。
  數組
  數組是有序數據的集合, 數組中的每個元素具有相同的類型。數組名和下標可唯一地確定數組中的元素。數組可分爲一維數組和多維數組。
  一維數組
  聲明方式:
  type arrayName[];
  或 type[] arrayName;
  type可以是Java中任意的數據類型, arrayName爲數組名。
  如: int intArray[];
  聲明瞭一個名爲intArray的整型數組, 數組中的每個元素爲int型數據。
  Java在數組的聲明中並不爲數組元素分配內存, 因此 [ ] 中不用指出數組中元素個數, 即數組長度。
  在訪問數組的任何元素之前,我們必須爲它分配內存空間, 這可用new操作符, 其格式如下:
  arrayName = new type[arraySize];
  其中,arraySize指明數組的長度。
  如: intArray = new int[3]; 爲該數組分配了3個int型整數所需的內存空間。
  通常, 這兩部分可以合在一起, 格式如下:
  type arrayName[] = new type[arraySize];
  如: int intArray[] = new int[3];
  用new操作符爲數組分配內存空間後,就可以引用數組中的每一個元素。數組元素的引用方式爲: arrayName[index]
  其中: index爲數組下標,它可以爲整型常數或表達式。如a[3], b(i爲整型), c[6*I]等。下標從0開始, 一直到數組的長度減1。
  對於上面例子中的intArray數組來說,它有3個元素,分別爲:
  intArray[0], intArray[1], intArray[2]。(注意: 沒有intArray[3]。)
  另外,與C、C++中不同,Java對數組元素要進行越界檢查以保證安全性。同時,對於每個數組都有一個屬性length指明它的長度。
  例如: intArray.length指明數組intArray的長度。
  數組的初始化
  對數組元素可以按照上述的例子進行賦值。也可以在定義數組的同時進行初始化。
  如: int a[]={1,2,3,4,5};
  用逗號(,)分隔數組的各個元素,系統自動爲數組分配一定的內存空間。
  例3.5:數組的使用:
  public class ArrayTest{
  public static void main(String args[]){
  int i;
  int a[]=new int[5];
  for (i=0;i<5;i++)
  a=i;
  for (i=a.length-1;i>=0;i--)
  System.out.println("a["+i+"]="+a);
  }
  }
  多維數組
  與C、C++一樣, Java中多維數組可被看作數組的數組。例如二維數組就可看成是一個特殊的一維數組, 該數組的每個元素又是一個一維數組。下面我們主要以二維數組爲例來說明多維數組。
  二維數組的聲明方式如下:
  type arrayName[][];
  如: int intArray[][];
  與一維數組一樣,這時對數組元素也沒有分配內存空間,同要使用運算符new來分配內存,然後纔可以訪問每個元素。
  對二維數組中每個元素,引用方式爲:
  arrayName[index1][index2]
  其中index1、index2爲下標, 可爲整型常數或表達式, 如a[2][3]等。數組每一維的下標也都從0開始。
  在聲明二維數組的同時也可對它進行初始化。
  如:int a[][]={{2,3},{1,5},{3,4}};
  定義了一個3×2的數組,並對每個元素賦值。
  數組的越界
  如果使用數組分量時,其下標超過規定的值,則會發生數組的越界。這時,雖然程序能通過編譯,但在運行時會產生一個名爲ArrayIndexOutOfBoundsException 的例外,所以編程時要注意檢查數組下標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章