天天看點

java基礎--java文法

2.java文法

2.1java的變量

.java中的辨別符的要求:

  1,隻能是字母,數字,_,$

  2,數字不能作為辨別符的開頭。

  3,大小寫敏感。

  4,沒有長度限制。如:arrayoutofboudleexception

  5,辨別符不能是關鍵字。

   一般來說,類的名字以大寫字母開頭。

   方法和變量的名字以小寫字母開頭。

   辨別符的名字應當具有含義,如age, name

   表達式:1,由運算符和變量組成。2,都會有傳回值。

   簡單表達式:a/b;複合表達式:"a/b="+(a/b);

.對于任意一個變量隻要定義都需要三部分的内容

   變量的類型    變量名稱 = 變量的值 (變量的值必須和類型一緻)

.變量的類型

  基本資料類型:4類8種

  1、整型-->byte(1)    short(2)    int(4)    long(8)    -->int(預設類型)

     定義long    long num = 12l;

  2、浮點類型--> float(4)    double(8)    --->double(預設類型)

     定義float    float f = 12.0f;

  3、布爾類型(boolean)--> true false

  4、字元類型(char)--->字元類型不是字元串使用的是' '(單引号)進行定義,而且隻能有一個字元

     char c = 'a'; char cc = 'cc';//錯誤,隻能有一個字元。unicode(2個位元組)

·變量的類型轉換()

  1、小類型的值會自動轉換為大類型的值 int a = 10    double b = 12.5    a+b-->double類型

  2、要把一個大類型的值存儲到小類型中,需要進行強制類型轉換,如果不轉換,會編譯出錯

          強制類型轉換的方式:(int)12.5--->就把12.5這個double類型轉換為int類型了

3、當char、byte和short進行運算時會自動轉換為int類型

     byte b1 = 12; byte b2 = 32;  b1+b2--->是int類型

·變量的作用域

  花括号内有效,在同一個作用域中不能重複定義變量

·定義變量的規定

  第一:關鍵字用來定義變量(_sdfhj_sd)int double = 10;

  第二:對于類而言,定義的名稱的第一個字母用大寫,對于函數或普通的變量而言,

        第一個字小寫 之後遵循駝峰辨別。

思考:

short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1; (s1+1 運算結果是int 型,需要強制轉換類型)

short s1 = 1; s1 +=1;(可以正确編譯)

·引用類型變量(string)

    string 類提供了數值不可改變的字元串 string s=new string(“abc”);建立了兩個對象

    1,在字元串池中建立一個對象(此對象是不能重複的)

    2,new出一個對象。java運作環境有一個字元串池,由string類維護。

       執行語句string s="abc"時,首先檢視字元串池中是否存在字元串"abc",如果存                  在則直接将"abc"賦給s,如果不存在則先在字元串池中建立一個字元串"abc",然後再将

       其賦給s。執行語句  string s=new string("abc")時,不管字元串池中存              

       在字元串"abc",直接建立一字元串"abc"

      (注意:建立的字元串"abc"不是在字元串池中),然後将其付給s。

      2,初始化 (局部變量而言,必須初始化才能使用)如:age=10;

      3,通過變量的名字對變量進行操作,如:age=other;

       指派時,左=右

  1)資料性質是否一樣。

  2)所占用的記憶體空間上考慮(左>右)不用類型轉換。(左<右)要類型強制轉換,

如:int age=1;

                 longl=10;

                 age=(int)l;

符号位:0代表正數,1代表負數。

string 和stringbuffer 的差別

java 平台提供了兩個類:string 和stringbuffer,它們可以儲存和操作字元串,即包含多個字元的字元資料。這個string 類提供了數值不可改變的字元串。而這個stringbuffer 類提供的字元串進行修改。當你知道字元資料要改變的時候你就可以使用stringbuffer。典型地,你可以使用stringbuffers來動态構造字元資料。

2.2java運算符

2.2.1、+、-、*、/、%(算術運算符)

   2.2.2、邏輯運算符(>、<、>=、<=、==、!=)12>11-->true

   2.2.3、自增和自減

  注意:

      自增(++),自減(--)運算符。

      前++:++a;先對a+1,再傳回a+1之後的值。

      後++:a++;先傳回a的值,然後對a進行+1。

      前++,後++共同的特點:a本身的值都會+1;

      差別在于表達式的傳回值是不一樣;用傳回值來參與計算

2.4三目運算符

      ? :-->(boolean express)? a : b;如:char ch=(5>2)?'y':'n';

      ?前面的布爾表達式如果為真就執行a,否則執行b。

      (‘:‘左右兩側的傳回類型要一緻,且與ch的傳回類型也一樣)

2.3語句結構

      1,順序

      2,條件(代碼是否執行,依賴于一個特定的條件)

              if(boolean express){

                      xxxxxx;//如果布爾表達式為真就執行xxxxxx。

                      xxxxxx;

              }else{

                      xxxxxx;//如果布爾表達式為假就執行xxxxxx。

              }

      3,循環(相同的代碼,被重複的執行多次)

              a,初始化循環條件。b,确定循環條件。c,确定循環變量在循環體中的變化。

              (1)a;

                      while(boolean express){

                              xxxxxxxxx;//如果布爾表達式為真就執行xxxxxx

                              xxxxxxxxx;

                              c;

                      }

              (2)for(a;b;c){

                  }

              (3)do{

                              xxxxxxxxxx;//循環體至少執行一次;

                              xxxxxxxxxx;

                  }while(boolean express);

                  while(xxx){

                              xxxxxx;

                              bread;//或者continue;

                  break :用在循環或分支裡,用于退出整個循環或分支

                  continue :用在循環裡,用于結束本次循環。接着開始下一次循環

              4,分支

                          switch(var){

                                  case 1 : xxxxxx;

                                  break;

                                  case 2 : xxxxxx;

                                  ........

                                  default : xxxxxxx;//default後面可以不用break;

                          }

  注意:

      var:是一個整數表達式。是以傳遞給 switch 和 case 語句的參數應該

      是int、short、char 或者byte。long,string 都不能作用于swtich。

2.4函數

      函數所做的事情,可以将一個過程進行封裝,将來隻要調用函數就會調用整個過程

      函數的基本要素

              傳回值 函數名(函數參數){

                                            函數體;

                                        }

      函數(方法):是由一些相關代碼組成的集合,目的是為了解決一個特定的問題,或者實作

      某個特定的功能。

      函數(方法)一定有一個自己的名字,通過函數的名字執行函數中的代碼。

      2,在java中如何定義函數:

              a,聲明:public static void printmenu(int a,double b){.....}

              b,編寫函數體:

              如: public static void printmenu(int a,double b){

                              xxxxxxxxxxx;

                   }

              函數(方法)裡面不允許再有其它的函數(方法),函數(方法)的位置必須                    是并列的。

      3,調用函數:

              通過函數名,如pirntmenu(a,b);

              public static void main(string argv[]){

                          xxxxxxxxxxxx;

                          printmenu(a,b);

                          xxxxxxxx;

              調用者-原資料->函數

              return 作用:1,結束本方法。2,傳回結果。

              一個函數傳回的值隻能有一個。

      值傳遞。傳遞的是實參的值,

      被調函數使用的數都是實參的拷貝。

      是否改變實參,要看被調函數的設計。

2.5數組

一,數組:一維數組-->:三種聲明方式

      (1)首先要聲明。如:int[] array;

      (2)申請記憶體空間如:array=new int[2];

       array代表數組array[]的首位址(引用:引用類似c++裡的指針。);當參數傳遞時,隻

       要用數組的首位址就可以。

          1,數組中的元素類型要一緻。

          2,數組長度不能預設,不能改變,但可以删了重建。

          3,記憶體空間連續,有索引下标值(從0開始,最大length-1)

        優缺點:查詢快,增删慢(連結清單,查詢慢,增删快)

        隻要有new在,就要為變量配置設定記憶體。 array.length//表示數組array的長度。

        array存的是array數組首變量的位址。

  二,數組的顯示初始化:int[] array={1,2,3,4,5,6};

  三,int[] array=new int[]{1,2,3,4,5,6,7};

  數組的拷貝:

          public static int[] expand(int[] a){

              int[] b=new int[a.length*2];

              /* for(int i=0;i<a.length;i++){

                      b[i]=a[i];

                  這段代碼等于下面那條代碼

              */

              // 從a數組下标為0的位置開始拷貝,到b數組下标為0 的位置開始粘貼。

              // a.length為粘貼的個數。(一般為a數組的長度)。

              system.arraycopy(a,0,b,0,a.length);

              return b;//傳回擴充後的數組b。b是代表數組b的首位址。

          }

  二維數組(數組的數組)-->:三種聲明方

  二維數組的第二個[]在聲明時可以留白,如:int[][] array=new int[4][];

  //留白說明該二維數組的列是以行的數組下标為數組名,再成為新的數組。

  一,聲明:int[][] array=new int[3][4];//聲明一個三行四列的整型二維數組。

  二,int[][] array={{1,2,3},{2,3,4},{2,5,7},{2,3,6}};

  三,int[][] array=new int[][]{{1,2,3},{2,3,4},{2,5,7},{2,3,6}};

  1,找對象(客觀存在的事物);

  2,利用對象的功能。就是讓對象幹點什麼;

  3,對象的屬性可以是其他對象。

  4,對象還可以通過調用其他對象的函數産生聯系。

  5,簡單的對象構成複雜的系統。

  有什麼:屬性-------》 執行個體變量

  做什麼:方法-------》函數

  對象的屬性可以是其他對象

  對象還可以通過調用其他對象的函數産生聯系

  簡單的對象構成複雜的系統

  思想:解決問題的過程,

  總綱(優勢)

  1,符合人的思維過程。

  2,編寫出來的代碼比較合理。如:可擴充性,可維護性,可讀性等等。(存在就是合理),(貼     近生活)

  3,弱耦合性,

  4,可擴充性

  5,可複用性。不要重複制造輪子。

  6,更盡所能,更施其職。

繼續閱讀