20145216 《Java程式設計》第2周學習總結
教材學習內容總結
第三章 基礎語法
3.1 型別、變數與運算子
•型別
•基本型別
•整數:short(佔2位元組)、int(佔4位元組)、long(佔8位元組)
•位元組:byte
•浮點數:float(佔4位元組)、double(佔8位元組)
•字元:char(漢字、英文字元都是雙位元組的)
•布林:boolean(true/false不能與其他型別進行運算)
•類型別
•變數 :資料暫存位置在程式語言中稱為變數,變數在命名時不可使用數字作為開頭,也不能使用一些特殊字元,而變數名稱不可與Java關鍵詞同名,也不可與Java保留字同名。
•運算子
•算術運算 :+、-、*、/、%
•關係運算:>、>=、<、<=、==、!=(注意不要對浮點數進行相等性運算)
•條件運算子: 條件表示式 ? 成立時返回值:失敗時返回值
•邏輯運算:與(&&)、或(||)、非(!)(運算結果是boolean值:true或false)
•位運算 :運算結果為位串(位向量),常用於掩碼(Mask)運算
•與(&):全1為1,有0則0
•或(|):全0為0,有1則1
•非(~):書上說是補碼,按我們的習慣應該是反碼
•異或(^):相同為0,不同為1
•左移(<<):最右補0
•算術右移(>>):右移後,正數最高位補0,負數最高位補1
•邏輯右移(>>>):右移後,最高位總是補0
•遞增、遞減:i++、i--、++i、--i
•賦值:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
注意:x=y是指將y的值賦給x,而x==y是比較x與y是否相等。
•型別轉換
•短->長(widening)是安全的,長->短(narrowing)必須強制轉換
•型別轉換 •短->長(widening)是安全的,長->短(narrowing)必須強制轉換
3.2流程控制
•Structured programming(結構化程式設計)包含三種語句
•順序
•分支:if、if...else、if...else if、switch...case(如果判斷的具體數值不多,且符合byte、short、int、char這四種型別,建議使用switch語句;如果是區間判斷,或對結果為布林型別判斷,則應使用if語句)
•迴圈:for、while、do...while
教材學習中的問題和解決過程
問題:書上p63位運算中示例程式:
byte number = 0;
System.out.println(~number);
顯示結果為-1
解決過程:
~表示補碼運算,補碼運算是將所有位0變1,1變0,byte佔記憶體1位元組,number儲存 的0在記憶體中是位00000000,經補碼運算就變成11111111,這個數在計算機中用整數表示則為-1。
程式碼除錯中的問題和解決過程
問題:我先將書上的程式碼看了幾遍,然後試著自己編寫,發現總是弄不清楚什麼時候用System.out.printf,什麼時候用System.out.println。
解決方法:通過上網百度,發現兩者分別適用的情況:
如果輸出的是字串就用printf()好,但如果輸出的是單個字元就用println()好。
例如:
int i = 1, j = 2, k = 3;
System.out.printf("%d的值 + %d的值 是 %d \n", i, j, k); //如果是輸出字串用printf好
System.out.println(i + "的值 " + "+ " + j + "的值 是 " + k);
int m = 47;
System.out.printf("%d\n", m);
System.out.println(m); //如果是輸出單個字元用 println好
運用IDEA,我成功執行了以下4段程式碼:
•變數:
•運算子:
•switch條件式:
•for迴圈:
問題:第一次編寫該程式碼時,漏寫了語句"%d*%d=%2d"中的“2”。
解決方法:由於不清楚為什麼要寫成%2d,於是上網查詢了資料,得到以下解釋:
System.out.printf("%d*%d=%2d",x,y,z);
%d按照十進位制整數的形式輸出,%2d則是至少輸出佔有兩個字元的十進位制整數。
執行結果:
如果x=1,y=2,z=2時,1*2= 2(注意最後的一個2佔有兩個字元長度)
如果x=2,y=5,z=10時,2*5=10
其他(感悟、思考等,可選)
第一次使用IDEA,我發現用這個軟體編寫java程式真的很方便,很多語句只需要簡寫首字母便可以全部打出來。通過多看書上的程式碼,然後自己試著編寫,並查詢錯誤,解決問題,我感覺自己對java的認識和了解又進了一步,我認為將自己的盲點通過自學慢慢地掌握是我學習這門課最大的收穫。
程式碼託管
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 4500行 | 30篇 | 350小時 | 能將java運用自如 |
第一週 | 150/150 | 2/2 | 15/15 | 學習了與java相關的基礎知識 |
第二週 | 200/350 | 1/3 | 20/35 |
學習了java的基本語法 |