java跨平台
   Java 程式compilier後產生的*.class必須透過各個不同版本的jre
    才能跨平台與不同電腦溝通
   *.class=>jre=> mac os/windows/linux…
 
●所有純物件導向程式都會以class開頭
 
關於進位與位元
  
    因為是64位元電腦,10進位的0,在機器語言就是640
   8進位就會是201的組合
   16進會就會是401的組合
    依此類推
 
錯誤訊息說明
  看第一個error
  因為java開頭會有三種: class、interface、enum(小寫),用來定義功能
  出現下列錯誤訊息就是開頭定義功能有錯 
  
  ex1.java:5表示在第五行,^指出錯誤的地方,通常代表有字拼錯
    
 
Data type 資料類型前述
   1.=>功能
   2.文字/數字(可以加減乘除),不論變數或值,只要被” “框住全部都當作字串
   3.+的用法:
   數字+數字=數字中的加法
   文字+文字=兩個字串合併為一個字串
   文字+數字會把數字當作文字,變成一個字串
   System.out.println("10+20="+10+20);   //10+20=10+20
    在此,先判斷”10+20=”+10=>為文字+數字變字串
    再判斷”10+20=”+10為文字+20(數字)=>變字串
    compilier時,先確定  Call by reference(data type/java 的來源文件-jdk)
    compilier時,Call by values 後確定
    System.out.println("10+20="+(10+20));//10+20=30
    如果要用加法,先用括號括起來
 
Data type 基本類型
   數字:
   整數:long,int,short,byte
 (差別只在於位元大小)(byte:正整數0~127,負整數:-1~-128 )
  *整數會去小數:以下列為例,
     判斷時會先判斷10(int)/3(int)的結果是取用int
    所以要取整數去小數
   System.out.println(10/3); //outputs 3
   System.out.println(1/3); //outputs 0
     轉型為浮點數的方法,加上小數點,預設轉為double
  System.out.println(10/3.);
   浮點數:double,float,
   位階大小由大到小double>float>long>int>short>byte 
  (浮點和整數的大小不是用記憶體大小來看,
   因為浮點數是用計概的精準數換算的)
  
   字元:char只能有一個字元,並且用單引號框住,如果輸入數字,
  會自動對應到ASCII表去查找對應的字元
   char x='a'; //outputs a
   char x3=97; //outputs a
  
   布林:Boolean只有truefalse,在c就是1或0
   boolean x4=true;
 
*非基本類型因為有函式庫=>字串String:要加””
 
*當有兩個以上不同位階的數字混和運算時會取最大位階來運算,
  int x5=10+10+1.2 ;// error因為1.2變成double
  int x6=10+10+1.2f ;// error因為1.2f變成float
  int x7=(int)(10+10+1.2); //ok 因為右邊轉整數
  int x8=(int)(10+10+1.2f); //ok因為右邊轉整數
  long x9=(int)(10+10+1.2f); //ok因為右邊轉int 位階比long
  long x10=10+10+(int)(1.2f); //ok
 
變數 identify
   語法:DataType 變數=初始值(只有網頁語言不需要給datatype)
   變數在定義時,會先決定等號右邊的資料類型是否一致,
  且右邊位階不能比左邊大,最後才看值去計算
 
變數的定義錯誤
    x=20;
  
   因為當call by reference時,比對x java來源文件中有沒有資料(沒有給定datatype)
   因為沒有,所以顯示cannot find symbol
 
變數的 初始值:
   int x;
   System.out.println(x);
    錯誤訊息顯示x沒有初始值,在java中如果變數沒有給值,是無法使用的,
    連compilier都會有問題
    但如果只是int x;沒有使用這個變數,compilier是可以過的
  
 
變數的命名規則(先給初始值並定義資料類型)
   1.有大小寫的區分
   2.有功能的單字不能用來命名ex:class
   3.可搭配數字,但數字不能放在第一位
   4.可用的符號只有$_,其他符號不可用
   5.可用萬國碼unicode
 ex:int國文=98; System.out.println(國文-20); //outputs 78
 
c訂的規則
   輸入數字時,預設為int,但此時byte x=128; byte只到127所以出現錯誤訊息
   因為在compilier時,如果整數的設定類型不是int會自動由int轉換為所設定類型
 
 
數字位階大小晉升與轉型
       整數
   1.promotion=>晉升(變數)
   a)byte,short,(int因為記憶體空間夠大沒有這個問題)
      byte x=10;
      byte y=20;
      byte z=10+20;
      =>沒有問題,因為右邊為兩個值相加後的值小於127
      byte z2=x+y;
      =>有問題,因為這邊xy變數都是byte此時他不會管它實際上的數字,
          直接當作是 byte x + byte y
     (因為call by reference,他先看作是兩個byte相加)
          兩者相加是有可能超過127(假設兩者=127的話),會有問題,
          這時就會自動提升 x+y變成int且可能超過127
           所以會出現無法把int轉換為byte的問題
     
 
  2.casting轉型
  如上述問題,解決辦法有兩個
   a)int byte z2=x+y;直接升級為int但因為int32位元所占記憶體空間較大,
     如果不要占太多記憶體就不能用此方法
   b)轉型:byte z2=(byte)(x+y);x+yint轉為byte
    若是short則可以改為short z2=(short)(x+y);short z2=(byte)(x+y);
    轉型時,右邊可以轉為同等級會比較小(站記憶體空間比較小)的等級
 
浮點
  a)float
     10=>int
     10.0=>double,浮點數預設為double
     b)轉型:
     float x=10;
     //float y=10.0; =>因為.0double會有問題
     *double轉變為float的作法有三種
     float y2=(float)10.0;
     float y3=10.0f;
     float y4=10.0F;
 
跳脫字元(只有在字串時使用)
   \” \’ 可以正確顯示為一個字符
   \n:換行
   \t:跳格(一次空大約四個空格)
 
正規表示法regular expression(所有語言通用)=>之後教api一起提
 
 
 
arrow
arrow
    創作者介紹
    創作者 muchone 的頭像
    muchone

    簡單。生活。享受

    muchone 發表在 痞客邦 留言(0) 人氣()