2009年9月30日 星期三

小小的公告

因為今天一口氣新增了不少文
所以要看完可能要花點時間
今天新增的文有JAVA文七篇
一篇圖畫
JAVA文進度還是不夠阿!!!!
對了
如果有再看JAVA文的人
發現錯誤要跟我說一下喔~~
這樣我好修正
有什麼建議也可以說一下~~
下星期天空那邊就會整頓好跟這裡同步更新了
有些圖也會放過去
我天空那邊還會放其他我在網路上抓到的圖
有需要的等我天空開放後
再找我要密碼喔

JAVA筆記:第七篇-迴圈

迴圈:

  迴圈有三種,for、while、do-while,基本上功能都相同,依照需求決定使用哪種迴圈。



  for:

    for(X;Y;Z){

     程式行為。

    }

    X:起始化數值,若有多個則用逗號區隔,大多用於迴圈的計數值,可同時在此宣告需要的變數

    Y:條件句,會產生布林值,若條件為true則繼續迴圈,為false則停止迴圈

    Z:數值增減,負責對變數作增減,大多用於迴圈的計數值,若有多變數則用逗號區隔



    一個特別的for迴圈:

      for( X ; Y ) { }

       X:與Y相同型別的變數,可在此宣告需要的變數

       Y:陣列、集合等變數

      功用:將Y的內容依序傳給X,一次一個



  while:

    while(X){

     程式行為。

    }

    X:條件句,會產生布林值,若條件為true則會執行迴圈,為false則停止迴圈



  do-while:

   do{

    程式行為。

   }while(X);

    X:條件句,會產生布林值,若條件為true則會執行迴圈,為false則停止迴圈



  while與do-while迴圈的差別是,while會先確認條件句X是否為true再決定是否執行迴圈,而do-while必定會先執行一次再依照條件句X的結果決定是否繼續迴圈。

JAVA筆記:第六篇-流程控制

判別式:

  判別式是多數的程式語言都有的指令,當然,java也不例外,以下將介紹if-else判別式與switch-case的判別式。

  if-else判別式;

    if(X){

     y;

    }elxe{

      Z;

     }

    以上是一個最基本的if-else判別式

    x=條件式

    y&z=程式

    若是x條件成立,則執行y程式碼,反之,則執行else程式碼.

    if可以單獨使用,當然,也可以重複使用,例如:

     if( ){

     } if( ){

       }

    這樣的狀況會在第一個if判別結束之後繼續執行第二個if。

    條件式範例:

        字串變數.equals("內容") 判別該字串變數內容是否與""中內容相同

        變數 = = x 判別該變數數值是否為x (x需為數值

    條件式可多個,使用 || (or) && (and) 作區隔

     || (or) 用此相連的條件式只需其中之一符合即成立

     && (and) 用此相連的條件式則需全部符合才成立

  三元運算子:
    有一種與if-else功能相同的運算子,叫做三元運算子,
    他可以很方便得以一行完成if-else的功能,不過實用性不太高
    之所以稱為三元運算子,是因為你必須提供三個運算元做為他運算時所需要的數值。
    例:boolean_expression ? result_1 : result_2 ;
      如果boolean_expression運算為true的話則執行result_1,若為false則執行result_2


  switch-case判別式:

    switch(X){

     case Y1: <<注意!case後面式接續冒號非分號。

      z1;

     case Y2:

      z2;

     case Y3:

     case Y4:

      z3;

    }

    X=要檢查的變數

    Yn=受檢查的變數內容是否為次

    Zn=若case成立則執行的程式碼

    case中建議搭配break做中斷switch的動作,若沒有做此動作則程式會繼續往下執行switch內的case。

    case中判斷的若是字元或市字串皆要使用雙引號和單引號包圍。

    此範例中,case Y3 與 case Y4 相連是被允許的,若是變數內容符合Y3與Y4則執行z3的程式碼。

JAVA筆記:第五篇-運算子

運算子:

  運算子分為算術運算子、關係運算子、條件運算子、位元運算子、位移運算子、指定運算子,以下將會分別作介紹。



  算術運算子:

    算術運算子簡單來說就是一般數學使用到的+-*/等符號,以下會一一列出。



    標準數學運算子:

     加法: " + "     例:x + y 將整數(或是浮點數)X、Y相加

     減法: " - "     例:x - y 將整數(或是浮點數)X、Y相減

     乘法: " * "     例:x * y 將整數(或是浮點數)X、Y相乘

     除法: " / "     例:x / y 將整數(或是浮點數)X、Y相除    10/3 得 3

     除法(求餘數): " % " 例:x % y 將整數(或是浮點數)X、Y相除求餘數 10%3 得 1



    遞增與遞減:

     遞增: ++

     遞減: --

     遞增與遞減都是逐次減一或是加一,而此運算子放在變數前後功能並不相同!

     前置時,會優先將變數加一後再做其他動作。

     後置時,會將該行運算執行完後再將變數加一。

     例:x = ++y ; < 此行會先將 y 變數加一再將加一後的數值放入 x

       x = y++ ; < 此行會先將 y 變數數值放入 x 再將 y 作加一的動作


    運算子的優先順序:

     算術運算子的優先順序大致與我們一般算數學時相同,由左而右計算

     優先順序如下

      1,以小括號標計的運算子

      2,遞增遞減

      3,乘除

      4,加減



  關係運算子:

    關係運算子用於比對兩數值的大小關係,運算結果為boolean型態。



    相等;    ==   相等的關係運算子是由兩個等號組成,不要打錯喔

    不等:    !=   不等的關係運算子是由一個驚嘆號配一個等號

    小於:    <

    大於:    >

    小於等於:  <=

    大於等於:  >=



  條件運算子:

    在程式中常常用到多種條件需要同時成立或是其一成立的狀況,

    此時就會需要用到條件運算子進行並且、或是的運算,運算結果為boolean型態。



    並且; A && B AB兩者同時成立 由兩個 & 符號組成

    或是: A || B AB兩者其一成立 由兩個 | 符號組成 | 鍵位於enter鍵上方

    不是:   !A   A條件式不成立



  位元運算子:

    JAVA提供 & 、 | 、 ! 、 ~ 四個位元運算子,這些運算子又稱為邏輯運算子,

    因為他們分別提供數位邏輯中的And、Or、Xor、補數運算,

    注意!運算過程中,數值皆以二進位表示,並且需要注意各型別擁有多少位元(BIT)



    And;     &  邏輯運算記憶口訣:有零為零,無零為一

    Or :     |  邏輯運算記憶口訣:有一為一,無一為零

    Xor:     ^  邏輯運算記憶口訣:相同為一,不同為零

    補數運算:   ~  邏輯運算記憶口訣:求補數,零與一互換



  位移運算子:

    位移運算子可以指定數值的位元進行左移或是右移,並可以指定位移單元,位移時以二進位運算!



    左移; A <<  B   A位元左移B個單位,右邊補上0

    右移: A >>  B   A位元右移B個單位,左邊補上原來左邊的位元值

    右移: A >>> B   A位元右移B個單位,左邊補上0



  指定運算子:

    一般在做某數值或是變數給予某一變數的"="就是一個指定運算子,在JAVA中還提供了其他許多的指定運算子,

    讓你可以同時進行指定與運算的工作



    +=  : A+=B   A=A+B

    -=  : A-=B   A=A-B

    *=  : A*=B   A=A*B

    /=  : A/=B   A=A/B

    %=  : A%=B   A=A%B

    &=  : A&=B   A=A&B

    |=  : A|=B   A=A|B

    ^=  : A^=B   A=A^B

    <<=  : A<<=B   A=A<
    >>=  : A>>=B   A=A>>B

    >>>= : A>>>=B  A=A>>>B

JAVA筆記:第四篇-顯示/使用者輸入

顯示/使用者輸入

  注意!這裡提及的顯示與輸入指令常用於在DOS環境,一般視窗化後有其他的顯示與輸入方法。



  顯示指令:

    System.out.print("內容");

    System.out.println("內容");

    System.out.printf("內容、轉換指令詞",與指令相符合的變數);

    以上三種都是JAVA提供的顯示指令,print與println的差別就是是否會自動換行,println會自動換行,而print不會。printf的使用方法與C相同,以%s、%d、%f等跳脫指令接收與之相符合的變數內容。

    指令前方的System.out指的是系統輸出。



  輸入指令:

    在JAVA裡面要輸入內容,目前常用的一種方法就是使用Scanner元件。

    而要使用這個元件,需要先import java.util.*才可使用,因為Scanner屬於util套件。

    在宣告元件的時候大小寫需分明!

    Scanner (自訂一變數名稱) = new Scanner(System.in);

    輸入時,若你需要獲得使用者輸入的變數為A,而你宣告Scanner的變數為x:

      A = x.next___();

      ___處輸入A的型別,若A為字串型別(String)則___處可省略。

JAVA筆記:第三篇-變數型別

變數型別:

primitive type 基本型態


-整數-






bit byte 數值範圍
byte 8 1 -2^7 ~ +2^7-1
short 16 2 -2^15~+2^15-1
int 32 4 -2^31~+2^31-1
long 64 8 -2^63~+2^63-1


-小數(浮點數)-




bit byte 數值範圍
float 32 4 max:3.4028235*10^38 min:1.4*10^-45
double 64 8 max:1.7976931348623157*10^308 min:4.9*10^-324

  JAVA內部預設碰到浮點數即將該數值當作double型別,若以float型別變數承接會出現錯誤,若要使用float變數承接該數值則需要在該數值後加上f,或是在數值前加上(float)強制轉型。

-ASCII碼-



bit byte 數值範圍
char 16 2

  內容為7 或是 '\0007'時 使主機板蜂鳴器響


-布林代數-



bit byte 數值範圍
boolean 1

  初始值只能給 true/false



變數表:兩型態變數作算術運算後其內容型態會轉為此表相交錯的型態。例:byte+byte=int








double double double double double double double
float float float float float float double
byte short int long float double
byte int int int long float double
short int int int long float double
int int int int long float double
long long long long long float double



整數與浮點數型別的變數可以在變數前面加上"(型別)"強制將該變數轉換為指定的型別,要注意的是,若是由浮點數轉為整數,則其小數點後數字會被去除。



運算後的晉升、轉型問題

  在算術運算時,需要注意的是型別轉換的狀況!

  通常來說,兩個變數在做運算時,得出的答案都會升級到bit較大的型態,稱為晉升

  所以要注意到承接兩變數運算結果的變數型態!

    例如:一個int型態的A與一個byte型態的B做運算時,答案會變成int型態。

  如果碰到浮點數,則結果以浮點數儲存。

  單純碰到數值運算時,例如:X=9/3 其結果預設以int儲存。

  單純碰到數值運算時,且需要取完整的浮點數時,則在其中之一個數值加上.0即可,

    例如:x=10/4 直接這樣運算的結果會是2,若我們希望他出來的答案是2.5時,有兩種解決辦法

      第一種:在10或是4的後方加上.0

      第二種:在運算時(10/4)前方加上(float)或是(double)強制轉型成浮點數

  單純做數值運算時,若其結果是浮點數,而我們卻只需要整數時,只須強制轉型成整數型態即可

JAVA筆記:第二篇-程式的基本架構

程式基本架構

  下面將會介紹一個程式的基本架構,這裡只是大略提及,後面會有更詳細的篇章。



  1.套件的宣告

  package (套件名稱);

      宣告套件名稱,套件用於管理類別,相同套件的類別會儲存在同一個資料夾。

      必須位於程式最上方。

      套件宣告可以省略,若無宣告則類別屬於預設套件,即同一資料夾內皆屬於同一套件。



  2.匯入套件

  import java.lang.*;

  import java.util.*;

      匯入需要的套件庫,可省略,可多行。

      某些套件會有類似程式碼,故不要隨意匯入大量套件!易混亂。

      若是真的需要匯入擁有相同指令的套件,就需要再使用該指令時加上套件名稱。

      省略時預設匯入 java.lang.*;

      多不會影響程式運行效率

      介於package class/interface 之間



  3.類別or介面宣告

  public class Report {};

       類別宣告

       一個檔案中只有一個class可以使用public宣告,但是可以無public宣告。

       以public宣告之類別名稱需要與檔案名稱相符。

  public interface Fly {};

       介面宣告。

       在後面幾篇會再完整敘述。



  4.方法宣告

     方法位於類別內,編寫程式行為。

     建構子:包含在class內部,與class名稱相同,可有可無。

         之後會有更詳細的介紹。

     程式啟始點:

           程式起始點為一種方法,方法名稱為main,用於啟動程式。

           程式起始點可以省略,但若是以該class作為一個程式的執行起點,則該class必須含有main方法。

           main方法的編寫範例:

                     public static void main( String[] args ) { }

                     在此可以看到幾個之後會解說的關鍵字 public 、 static 、 void

                      public:main方法必須是public(公開)的

                      static:靜態的,在後面的篇幅會解說

                      void :表示main方法沒有回傳值

                     main方法括號中的args字串陣列的變數用來儲存啟動程式時,使用者一並輸入的命令列引數,雖然不太會使用到,但仍必須寫上,這是規定。



  若是宣告一個class,內容皆為空時,編譯後內容為:

    class MyClass extende Object{

     public MyClass(){ (此為建構子)

      super();

     }


    }

   紅字內容為編譯後編譯器自行加入的東西!



  宣告在class內的變數可不給預設內容

  但是在方法內部的變數則需要給預設內容!



  命名規則:在宣告類別與方法名稱時,數字不可開頭,名稱可用中文與$ (Unicode字元) 但是盡量少用。

       另外,JAVA對大小寫有較嚴格的規範。