● java跨平台
Java 程式compilier後產生的*.class必須透過各個不同版本的jre
才能跨平台與不同電腦溝通
*.class=>jre=> mac os/windows/linux…
●所有純物件導向程式都會以class開頭
● 關於進位與位元
因為是64位元電腦,10進位的0,在機器語言就是64個0
8進位就會是2組0和1的組合
16進會就會是4組0和1的組合
依此類推
●錯誤訊息說明
看第一個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:只有true或false,在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;
=>有問題,因為這邊x和y變數都是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+y由int轉為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; =>因為.0是double會有問題
*把double轉變為float的作法有三種
float y2=(float)10.0;
float y3=10.0f;
float y4=10.0F;
● 跳脫字元(只有在字串時使用)
\”或 \’ 可以正確顯示”或’為一個字符
\n:換行
\t:跳格(一次空大約四個空格)
● 正規表示法regular expression(所有語言通用)=>之後教api一起提
文章標籤
全站熱搜
留言列表