王之泰201771010131《面向對象程式設計(java)》第二周學習總結 第一部分:理論知識學習部分 第三章 第三章內容主要為Java語言的基礎語法,主要內容如下 1.基礎知識 1.1標識符 a)標識符可用作類名、變數名、方法名、數組名、文件名等。 註:第一個符號不能為數字,即不能用數字開頭。 ...
王之泰201771010131《面向對象程式設計(java)》第二周學習總結
第一部分:理論知識學習部分
第三章
第三章內容主要為Java語言的基礎語法,主要內容如下
1.基礎知識
1.1標識符
a)標識符可用作類名、變數名、方法名、數組名、文件名等。
註:第一個符號不能為數字,即不能用數字開頭。
1.2關鍵字
a)關鍵字是Java語言中已經被賦予特定意義的一些單詞。
b)常見有:class、public、try、catch、if、 float、import、void等。
註:關鍵字不做變數名
1.3註釋
a)// 註釋內容由//一直到此行結束。
b)/*和*/ 定義一個註釋塊。
c)/**開始,*/結束 這種註釋方法可用來自動產生文檔。
2.數據類型
a)Java中每種變數在使用前都必須申明變數類型
b)大的來分有四種類型,細化就有八種類型,即:整數類型(int、short、long、byte) 浮點類型(float、double) 字元類型(char) 布爾類型(boolean)
c)Java中的boolean型和byte型是C語言中沒有的。
d)值得一提的是,Java的編碼類型並不是C語言使用的ANSI碼,而是Unicode碼。Unicode(統一碼、萬國碼)是一個編碼規範,它滿足跨語言、跨平臺進行文本轉換、處理的要求。
註:Java中沒有unsigned類型;
布爾值和整數在Java中不能相互轉換
3.變數
a)在Java中,每一個變數屬於一種類型。在聲明變數時,變數所屬的類型 於變數名之前。
b) 一行可以聲明多個變數,但不建議這麼做。逐一聲明每一個變數可以提高程式的可讀性。
註:一個變數聲明後,必須通過賦值語句對它進行明確的初始化;
變數的聲明儘可能地靠近變數第一次使用的地方,這是一種良好的程式編寫風格。
Java中,不能在同一作用域內聲明兩個同名的變數。
3.1常量
a)在Java中,使用關鍵字final來指示常量。一般常量名都用大寫。如:final double CM_PER_INCH=2.54;
b)關鍵字final表示只能對變數賦一次值,其值一旦設定,便不能改。
c)在Java中,經常希望某個常量可以在一個類中的多個方法中使用,我們將這些常量稱為類常量。可以使用關鍵字staticfinal聲明一個類常量(class constants)。
4.運算符
a)Java中,各種運算符都與面向對象有關
b) Java提供了兩個特別運算符
– new這是一個用來創建對象的運算符。
– instance of返回一個布爾值來指出某個對象是否是一個特定類或者是它的子類的一個實例。
c)用算符的優先順序
d) 數學函數包含在Math類中。冪函數;三角函數;指數函數及它的反函數等Java還提供了兩個常量。Math.PI Math.E
5.類型轉換
a)
b)強制類型轉換
兩個操作數中有一個是double類型的,另一個將會轉換成double類型。 兩個操作數中有一個是float類型的,另一個將會轉換成float類型。
兩個操作數中有一個是long類型的,另一個 將會轉換成long類型。
否則,兩個操作數都將轉換成int類型。
6.字元串
a)在Java中,字元串被當作對象來處理。
b)程式中需要用到的字元串可以分為兩大類:
創建之後不會再做修改和變動的不可變字元串String類
創建之後允許再做更改和變化的構建字元串StringBuilder類
c) 使用“”定義字元串
7.輸入輸出
a) 通過控制台進行輸入時,需要構造一個Scanner對象,並與“標準輸入流”System.in關聯。
b) 使用System.out.print(x)將數值x輸出到控制臺上,這條命令將以x對應的數據類型所允許的最大非0數字位數列印輸出x。
8. 控制流程
9. 大數值
a)如果基本的整型和浮點型數據無法達到要求的精度,可以使用java.math包中的兩個類, BigInteger和BigDecimal。
b)這兩個類可以操作任意長的數字
BigInteger類實現了任意精度的整數運算
BigDecimal實現了任意精度的浮點運算
10.數組
a)數組是一種數據結構,它是有序數據的集合, 數組中的每個元素的數據類型都是相同的。
b)對元素的確定是由數組名和它的下標實現的, 如a[0]代表數組a的第一個元素,a[1]代表數組 a的第二個元素,依次類推
第二部分:實驗部分
實驗二 Java基本程式設計(1)
實驗時間 2018-9-6
1、實驗目的與要求
(1)進一步熟悉命令行和IDE兩種方式下java程式開發的基本步驟;
(2)掌握Eclipse集成開發環境下導入Java源程式的過程;
(3)掌握Java語言構造基本程式的數據類型、變數、運算符、各類表達式、輸入輸出、流程式控制制的基本語法;
(4)掌握String類、StringBuilder類、數組類的用法。
2、實驗內容和步驟
實驗1:編寫java 應用程式,輸出以下4個表達式的值。
int i=1; double d=1.0; (1) 45+45*50%i-- (2) 1.5*3+d++ (3) (true)&&(3>4) (4) (i>0)||(i<0) |
實驗具體代碼如下:
1 package test1; 2 3 public class test0 { 4 5 public static void main(String[] args) { 6 int i=1; 7 double d=1.0; 8 System.out.println(45+45*50%i--); 9 System.out.println(1.5*3+d++); 10 System.out.println((true)&&(3>4)); 11 System.out.println((i>0)||(i<0)); 12 13 14 } 15 16 }
實驗驗證結果如下:
實驗2:編寫包含以下代碼片段的java應用程式,輸出字元串類對象s3的值。
String s1=“Hello!”; String s2=“World”; String s3=s1+s2; |
實驗具體代碼如下:
1 package test1; 2 3 public class test4 { 4 5 public static void main(String[] args) { 6 String s1 = "Hello "; 7 String s2 = "world!"; 8 String s3 = s1 + s2; 9 System.out.println(s3); 10 11 } 12 13 }
實驗驗證結果如下
實驗3:更改實驗2中s1、s2、s3為StringBuilder類對象,觀察程式運行結果並與實驗2結果進行對比,理解String類對象與StringBuilder類對象的區別。
實驗具體代碼如下:
1 package test1; 2 3 public class test4 { 4 5 public static void main(String[] args) { 6 StringBuilder s1 = new StringBuilder( "Hello "); 7 StringBuilder s2 = new StringBuilder( "world!"); 8 s1.append(s2);//調用appand方法把s2追加到s1上,即將s1 擴充 9 System.out.println(s1); 10 11 } 12 13 }
實驗結果如下:
實驗4:在命令行方式下調試運行下列程式,理解java應用程式命令行參數的用法。
public class Message { public static void main(String[] args) { if (args[0].equals(“-h”)) System.out.print(“Hello”); else if(args[0].equals(“-g”); System.out.print(“goodbye,”); for(int i=1;i<args.length;i++) System.out.print(“ ”+args[i]); System.out.println(“!”); } } |
實驗驗證及結果如下:
實驗5:Eclipse環境下導入第3章示常式序InputTest.java步驟:
(1)新建java project如下圖:
(2)選擇File->import->File ystem->Next,打開文件導入視窗如下圖,點擊上方Browse選擇導入源程式並選中,點擊下方Browse選擇源程式導入位置為新項目InputTest/src位置後,點擊finish完成導入。
(3)打開InputTest項目src文件夾的預設包,雙擊InputTest.java在IDE源程式編輯區打開文件。
(4)右鍵單擊InputTest.java文件名打開快捷菜單,選擇Run as->java application運行此程式,結合程式運行結果,理解代碼中Scanner類對象用法,掌握java控制台輸入方法。
程式運行結果如下 :
實驗6:按照實驗5的操作步驟,導入WriteReadFileTest.java示常式序,結合程式運行結果理解程式代碼,觀察項目文件夾下文件myfile.txt的內容,掌握文件的輸入輸出操作。
程式運行結果如下:
myfile.txt內容如下:
實驗7:按照實驗5的操作步驟,導入第3章示常式序,每個示常式序從語法、演算法兩個角度總結學習內容。
(1)測試Retirement.java,Retirement2.java,LotteryOdds.java掌握迴圈控制結構;
Retirement.java測試結果如下
總結:該程式計算需要多長時間才能存夠一定數量的退休金。28到35行為一個計數器,利用while迴圈計算出存儲值超過目標值時輸出存儲值。
使用的類不在Java.lang包中使用import字在程式第一行加上java.util類包
13到25行為輸入;28到35為程式處理;37行為輸出;
Retirement2.java測試程式如下
總結:該程式使用了do/while 迴圈,該迴圈體至少執行一次,Java中的迴圈通常為一個語句塊。
LotteryOdds.java測試程式如下
總結:該程式用來計算抽獎中獎的概率,應用了for迴圈,計算瞭如下公式的值:n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3...*k)
(2)測試BigIntegerTest.java,掌握大數值類的用法;
總結:
(3)測試LotteryDrawing.java,掌握數組的用法;
(4)測試CompoundInterest.java,掌握多維數組的用法;
(5)測試LotteryArray.java,掌握不規則數組的用法。
第三部分:實驗總結
第三章內容主要為Java語法的基礎知識,正如老師所說,其中百分之八九十的內容都是與我們學過的C語言基礎語法相同的,所以對於已經有了C基礎的我們來說,學習這一章內容並不像剛學電腦語言那樣比較吃力。所以通過對這一章的學習,相當於複習了一遍C語言中的基本語法。正因為有了C語言的基礎,所以這一章學習起來才不那麼吃力。在這一章的學習中,我學會了使用Java運算符構造各類表達式,掌握了Java流程式控制制技術,但是對string類和數組類的用法還有些許欠缺,但在課餘時間我會盡自己最大可能學習並消化這部分內容。通過老師上課為我們梳理的知識脈絡,和課後自己的閱讀上機學習,成功的完成了第二次實驗內容。雖然實驗中出現了很多bug,但在老師的提示和助教學長得幫助下成功debug。並且在這一周老師過渡式的上課當中,逐漸適應了上課模式。
通過這一周的學習,我更加理解了在實踐中學習的重要性,例如,實驗四中在行命令下調試程式,必須的先讀懂程式才能正確調試出結果,而且若只是理論學習,以我的水平看不出來會出現數組越界問題,但輸入合適參數時可以正常運行。這個問題也是助教學長反覆提示過的。我覺得在這周學習中我的收穫遠大於上周的學習內容,並且在接下來的時間里我會繼續努力學習,提高自身編程水平。