# 資料型態與計算1 - 運算子 - `+` `-` `*` `/` `%` `==` `!=`以上運算子同C - `!`不:常用於布林值 - Java預設型態為為int - 這邊有一個常見問題(如果沒搞清楚型態與記憶體的關聯) - 無法印出多個變數直接運算超過範圍的值 - 印出來還是超出,扣除127會得到別的數字,這就是溢位 ![](https://i.imgur.com/QQqOTxM.png) - 解決方法:型態轉換(強轉) ```java= byte x=(byte)(y+z); //先乘除後加減 括號先做 ``` - 我們宣告的代號**對應**電腦看的記憶體位置,這就是Point(指標) ![](https://i.imgur.com/lZqHaG8.png) 計算的原理是丟到CPU運算再丟回來(?) - 移出method的方法 ![](https://i.imgur.com/5hHZmF6.png) - static靜態 ## 程式各個部分的命名原則 - class類別 - 首字母大寫,第2字首字母大寫 - 例:DemoCode - 不能用數字跟特殊符號,第二個數字以後可以 - 除非_xxx,這是類似標頭檔的概念 - 不能用關鍵字或保留字(編譯器高亮的字) - 最好不要用goto - 因為Java的底層是C - 名稱要有意義,以功能為名也可以 - package套件 - 把網域反轉,最後一個字為模組名稱 - 補充:網域反轉只是講師要讓人好理解的比喻,實際上是個巧合 關於package的命名原則可以看[這篇](https://segmentfault.com/a/1190000038245787) - 全部小寫 - 不能使用(他人用過的) - method函數、方法 - 首字母小寫,第2字首字母大寫 - 例:demoCode - 不能用數字跟特殊符號,第二個數字以後可以 - 不能用關鍵字或保留字(編譯器高亮的字) - 名稱要有意義,以功能為名也可以 - 變數同method ## class - 一個專案的基本單位 - 表個別功能 - 結構 - static靜態method - 當專案運行,只要有static都會先切割記憶體,反之一般只有呼叫時才會切割記憶體 - 有分配記憶體才能呼叫 - 直到專案關閉才會銷毀記憶體 - 一般method 寫法: ```java= public void getMethod(){ } ``` 跟靜態method相對,使用完一段時間後無人進行呼叫就進行銷毀記憶體 - 變數也有類似的概念 - 靜態變數`private static int x=數值;` - 一般變數`private int y;` ## main method - 一個專案只會有一個main method - 因為程式只會有一個進入點 - 傳入為String - Java認定傳入為String、輸出為String - String[]:字串陣列 - args String[]的名稱(=電腦中記憶體位置) - 靜態&文字池的示意圖![](https://i.imgur.com/hciw6ZN.png) ## long 宣告: ```java= long x=123L; ``` - L大小寫都行,但大寫比較易讀 運算: ```java= long a=123L; long b=456L; long c=a+b; ``` ## int - Java預設的型態之一(還有double),後方不用加字母 - 補充:基本上只有byte跟short需要型態轉換,畢竟太小了 一些現象: ```java= int a=10; long b=10L; a=b; //不能賦值(裝不下) ``` ```java=+ b=a; //可以賦值(裝得下) ``` ```java=+ y=(int)j; //沒有意義的寫法 ``` 備註:不同型態轉換要格外注意! - 一個優秀的程式設計師會 - 盡量節省記憶體 - 不寫廢程式碼