20145308劉昊陽 《Java程序設計》第2周學習總結
教材學習內容總結
第三章 基礎語法
3.1 類型、變量與運算符
- 類型
- 基本類型
- 整數(short/int/long)
short: 2字節
int: 4字節(默認整數類型)
long: 8字節 - 字節(byte)
1字節=8個二進制數 - 浮點數(float/double)
float:4字節
double:8字節(默認浮點數類型) - 字符(char)
每個字符2字節(漢字、英文字母)
字符表現形式'a',字符串表現形式"ab" - 布爾(boolean):分為true和false兩種,無法與其他類型做運算
- null: 內容為null(空)
- 整數(short/int/long)
- 類類型
- 注釋
- 三種注釋
- /:單行
- /**/:多行(批注里套批注是不對的)
- /** */:javadoc文檔注釋(讀取每一行后,刪掉前導的符號和符號前的空格再復制到輸出文件)
- 為何要注釋
- 提高代碼的可讀性,養成寫代碼前先寫注釋的習慣
- 注釋算法或者代碼為什么這樣寫成,而不是代碼做什么
- 三種注釋
- 變量
Camel Case命名法:變量名以小寫字母開始,並在每個單字開始時第一個字母使用大寫- 變量聲明基本規則:明確數據類型+變量名稱(不可以以數字為開頭,也不可以使用一些特殊字符和關鍵字)+數據來開辟空間
- 變量在運算過程中,數據類型不一樣計算機會提升數據類型
例如:byte b=3; b=b+2;(運行結果會將2字節的Byte型變量提升成4字節的int型變量) - 指定變量值后,不想再改變變量值,在變量聲明前加
final - 局部變量使用前要初始化
- 字面常量
- 十進制直接書寫,十六進制表示以0x開頭,八進制表示以0開頭,二進制以0b開頭
- 浮點數的科學記號表示法0.00123=1.23e-3
- 小數計算機默認變量類型為
Double,要書寫成小數f的形式來轉換成float型 - 表示字符需要用“'”括住字符
- \ :轉義字符,轉變符號后字母或符號的含義,例如
\n、\b,如果想要打印"Hello",代碼就要書寫如下"\"hello\"",通過“ \ ”將Hello兩邊的“ " ”符號轉義
- 數字常量
- 可以用下划線來分隔數字
- 運算符
- 算術運算
- +、-、*、/、%
- +:除了數字運算,還可用於字符串的連接,如
System.out.print("5+5="+1+0);輸出結果為5+5=10 s=s+5與s+=5的區別:前者進行加法運算后再將值賦給s(共進行2次運算),后者在s的基礎上自增5(共進行1次運算)
- 關系運算
- 大於 > 、大於等於 >= 、小於 < 、小於等於 <= 、相等 == 、不相等 !=
- 不能對浮點數進行相等性運算
- =與區別:=是指定運算,是比較運算
- 條件運算符(Conditional Operator): 條件式 ? 成立返回值 : 失敗返回值
- 邏輯運算:運算結果是boolean值
- &&、||、!
- &&、||為快捷方式運算,即左操作數為
false,直接判斷整個算式結果為false
- 位運算:對2進制數字串進行運算
- &、|、~、^、<<、>>、>>>
- << :左移,最右位補0 >> :右移,最高位為0(正數)補0,最高位為1(負數)補1 >>> :右移,最高位補0
- 位運算是逐位運算
- 遞增、遞減
- i++、i-- : 執行一次操作后再自增\自減
- ++i、--i : 先自增\自減后再執行操作
- 賦值
- = : 將右側值賦給左邊
- 左移並賦值<<=:a<<=b,a=a<<b
- 右移並賦值>>=:a>>=b,a=a>>b
- 類型轉換
短->長安全,類型不同時計算機采取類型提升的方式,以長度最長的為准,長->短會損失精度- 用
float PI = 3.14F;形式將3.14存儲成float型 - 用
long number=2147483648L形式將2147483648存儲成long型
3.2 流程控制
- 機構化程序設計三種語句:順序、分支、循環
- 分支
- 類型
- if
- if...else
- if...else if:執行完就結束,不再向下執行
- switch...case
- 應用於判斷四種類型int,byte,short,char,字符串,不能判斷運算結果為布爾型的變量
- case語句間沒有位置順序,無break就向下執行
- default語句最后執行
- 循環
- 類型
- for
for(int x=3;循環執行條件;重復式)可以在for語句中定義一個臨時變量,在語句外不可用,節省空間- 判斷循環執行語句必須是boolean的重復式
- while
- 滿足條件式時執行循環語句
- do...while
- 無論是否滿足條件式都至少執行一次循環語句,之后滿足條件式再執行
- for
- break/continue
- break和continue單獨存在時,下面可以有任何語句,因為都執行不到
- break可以離開當前的區塊,並執行區塊后下一個描述句
- continue會略過之后的描述句,並回到循環區塊開頭進行下一次循環
教材學習中的問題和解決過程
- 問題:對於數據類型間的轉換(數據類型的強專和丟失精度不能理解)
- 解決過程:理解不了為什么強制轉換或者會丟失精度,從根源解決問題,看了視頻發現各種數據類型的存儲空間不同,數據類型不同會發生溢出(overflow)或者無法運算等錯誤情況,記住了每種數據類型的存儲空間,就從根本上解決了類型強轉換的方式和計算機如何提升數據類型以防止溢出情況發生
代碼調試中的問題和解決過程
-
問題
- p62代碼運行結果錯誤



- 解決過程:對照代碼和報錯提示,發現把printf打成了println,修改后發現成功了,不知道為什么println不能打印這個類型的變量,需要以后解決


- p62代碼運行結果錯誤
-
問題
- p55代碼運行結果錯誤


- 解決過程:將類名稱和文件名改成相同的名稱


- p55代碼運行結果錯誤
-
問題
- p60代碼運行結果錯誤


- p60代碼運行結果錯誤
-
解決過程 : 調試了好幾遍,不報錯但是也不出結果,好郁悶,讓同學幫着看了下,發現把%d抄成了%b,改過來了,運行成功


其他(感悟、思考等,可選)
- 上一周的學習中后半部部分的包有關內容不是很清楚,這周學習開始時又學習了一遍,體會到欠下的東西都是要自己還的,比起想着偷懶,還不如快點解決問題
- 上一周學習時只學習和安裝了IDE,這周安裝練習使用了IDEA,感受大了軟件的便利但也感受到了不習慣的地方,還需要多加練習
- 這周主要學習了Java的基本語法,感覺和C語言語法的相似之處還是很多的
學習進度條
| 代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
|---|---|---|---|---|
| 目標 | 5000行 | 30篇 | 400小時 | |
| 第一周 | 30/30 | 1/2 | 16/16 | 基礎知識 |
| 第二周 | 100/130 | 1/3 | 20/36 | 基本語法 |
| 第三周 | 0/0 | 0/0 | 0/0 | |
| 第四周 | 0/0 | 0/0 | 0/0 |
