1. 程式人生 > >楊其菊201771010134《面向對象程序設計Java》第二周學習總結

楊其菊201771010134《面向對象程序設計Java》第二周學習總結

關聯 種類型 不能 scan 變量聲明 input util dds 各種運算符

第三章 Java基本程序設計結構

第一部分:(理論知識部分)

本章主要學習:基本內容;數據類型;變量;運算符;類型轉換,字符串,輸入輸出,控制流程,大數值以及數組。

1.基本概念:

1)標識符:由字母、下劃線、美元符號、數字、漢字組成, 且第一個符號不能為數字。標識符可用作: 類名、變量名、方法名、數組名、文件名等

2)關鍵字: 關鍵字就是Java語言中已經被賦予特定意義 的一些單詞。 Eg:class、public、void等。 註意:關鍵字不做變量名

3)三種註釋方式:

a.// 註釋內容由//一直到此行結束。

b. /*和*/ 定義一個註釋塊。

c. /**開始,*/結束 這種註釋方法可用來自動產生文檔。

2.數據類型:

Java是一種強類型語言。這意味著每一個變量必須聲明一種為類型。
? Java共有8種基本類型
– 整數類型(int、short、long、byteJava中沒有unsigned類型 。
– 浮點類型(float、double)
– 布爾類型(boolean 在Java中,布爾值和整數不能相互轉換。只有true、false兩個值。

– 字符類型 (char) 英語引號 Java采用unicode字符編碼集

1)常量

2)變量:定義 ;定義同時賦值

(3)字符集:Java采用unicode字符編碼集,該編碼集16 位,含有65536個字符。

(4)轉義字符:

3.變量

? 1)聲明變量:在Java中,每一個變量屬於一種類型。在聲明變量時,變量所屬的類型位於變量名之前,一行可以聲明多個變量。。如;– int vacationDays;– int i,j;

2)變量初始化:一個變量聲明後,必須通過賦值語句對它進行明確的初始化——永遠不要使用一個未初始化的變量的值。 在Java中,不能在同一作用域內聲明兩個同名的變量。一個變量聲明後,必須通過賦值語句對它進行明確的初始化。

4.運算符(與面向對象運算相關):

1)各種運算符:算術運算符;自增運算符與自減運算符; 關系運算符;邏輯運算符;

2)運算符的優先級與結合性:

優先級 操作符 結合性
1 [ ] . () (方法調用) 從左到右
2 ! ~ ++ -- +(一元) –(一元) ()(強制類型轉換) new 從右到左
3 * / % 從左到右
4 + - 從左到右
5 << >>(算術右移) >>>(邏輯右移) 從左到右
6 < <= > >= instanceof 從左到右
7 == != 從左到右
8 & 從左到右
9 ^ 從左到右
10 | 從左到右
11 && 從左到右
12 || 從左到右
13 ?: 從右到左
14 = += -= *= /= %= &= |= ^= <<= >>= >>>= 從右到左

Java提供的兩個特別運算符:new(創建對象),Instanceof(返回一個布爾值來指出某個對象是否是一個特定類或者是它的子類的一個實例)。

5.類型轉換(長字節向短字節轉換):

技術分享圖片

1) 隱式類型轉換:大多數的數值轉換是遵循優先級的關系自動完成的。 轉換原則如下: 如果兩個操作數中有一個是double類型的,則另一個將 會轉換成double類型。float、long型同理。否則,兩個操作數都將轉換成int類型。

2) 強制類型轉換

6.字符串

String:不可變字符串

基本操作:(a) 獲得字符串的子串;

(b)串連接(+);

(c) 獲取字符串的長度;

(d) 檢測字符串是否相等;

(5) 字符串檢索;

獲得對象的字符串表示:所有的類都默認為是java.lang包中Object類的子類或間接子類----同族同宗,所有的類都可以享用一些基本功能。

StringBuilder:允許更改和變化的構建字符串StringBuilder.

7.輸入與輸出:

1) 讀取輸入:通過控制臺進行輸入時,需要構造一個Scanner對象,並 與“標準輸入流”System.in關聯。Scanner類定義在java.util包中,因此使用時需將相應的包加載進來。
? 2)格式化輸出:需要構造一個PrintWriter對象, 在構造器中,只需提供文件名。
? 3)文件輸入與輸出:需要一個用File對象構 造一個Scanner對象。

8.控制流程:if、switch、for、while、do-while。

循環語句分為三種: while; do-while;for

幾點註意:
? 表達式值、常量i的值為整型,不能是字符串。
? 常量i != 常量j
? 執行:先計算表達式值,若與常量i相同,則執行語句序列i;若都不相同,則執行語句序列n+1。
? 註意case子句後的break!!

9. 大數值
? 如果基本的整型和浮點型數據無法達到要求的精度,那麽可以使用 java.math 包中的兩個類,BigInteger和BigDecimal。這兩個類可以操作任意長的數字。
? BigInteger類實現了任意精度的整數運算,BigDecimal實現了任意精度的浮點運算。

10.數組: 對元素的確定是由數組名和它的下標實現的,如a[0]代表數組a的第一個元素,a[1]代表數組a的第二個元素,依次類推。
1)聲明:
? 一維數組格式:
數組元素類型 數組名字[];
數組元素類型[] 數組名字; //推薦使用
? 二維數組格式:
數組元素類型 數組名字[][];
數組元素類型[][] 數組名字;//推薦使用
其中數組元素類型可以為Java中的任意類型,包括基本類型和復合類型。

2)創建:格式如下:數組名字=new 數組元素類型[個數]

3)初始化

第二部分:(實驗部分)

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)

實驗代碼及調試結果如下圖:

技術分享圖片

實驗2:編寫包含以下代碼片段的java應用程序,輸出字符串類對象s3的值。

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

實驗代碼及調試結果如下圖:

技術分享圖片

實驗3:更改實驗2中s1、s2、s3為StringBuilder類對象,觀察程序運行結果並與實驗2結果進行對比,理解String類對象與StringBuilder類對象的區別。

實驗代碼及調試結果如下圖:

技術分享圖片

實驗4:在命令行方式下調試運行下列程序,理解java應用程序命令行參數的用法。

 1 public class Message
 2 {  
 3 public static void main(String[] args)
 4   {     
 5   if (args[0].equals(“-h”)) System.out.print(“Hello”);
 6     else if(args[0].equals(“-g”); System.out.print(“goodbye,”);
 7   for(int i=1;i<args.length;i++)
 8     System.out.print(“  ”+args[i]);
 9   System.out.println(“!”);
10   }
11 }

用命令行方式調試結果如下圖

技術分享圖片

實驗5:Eclipse環境下導入第3章示例程序InputTest.java步驟:

(1) 新建java project如下圖:

技術分享圖片

(1) 選擇File->import->File ystem->Next,打開文件導入窗口如下圖,點擊上方Browse選擇導入源程序並選中,點擊下方Browse選擇源程序導入位置為新項目InputTest/src位置後,點擊finish完成導入。

技術分享圖片

(1) 打開InputTest項目src文件夾的缺省包,雙擊InputTest.java在IDE源程序編輯區打開文件。

(2) 右鍵單擊InputTest.java文件名打開快捷菜單,選擇Run as->java application運行此程序,結合程序運行結果,理解代碼中Scanner類對象用法,掌握java控制臺輸入方法。

示例代碼:

技術分享圖片

實驗6按照實驗5的操作步驟,導入WriteReadFileTest.java示例程序,結合程序運行結果理解程序代碼,觀察項目文件夾下文件myfile.txt的內容,掌握文件的輸入輸出操作。

 1 import java.io.File;
 2 import java.io.FileNotFoundException;
 3 import java.io.PrintWriter;
 4 import java.util.Scanner;
 5 import java.util.Arrays;
 6 
 7 public class WriteReadFileTest {
 8 
 9     /**
10      * @param args
11      * @throws FileNotFoundException 
12      */
13     public static void main(String[] args) throws FileNotFoundException {
14 
15         //寫入文件演示
16         PrintWriter out = new PrintWriter("myfile.txt");
17         out.println("姓名 高數 Java 數據結構 平均成績 總成績");
18         out.println("張三 20 30 40 0 0");
19         out.println("李四 50 60 70 0 0");
20         out.close();//切記,輸出完畢,需要close
21         
22         
23         //讀入文件演示
24         Scanner in = new Scanner(new File("myfile.txt"));//為myfile.txt這個File創建一個掃描器in
25         int number = 1;//行號
26         while(in.hasNextLine()){//判斷掃描器是否還有下一行未讀取,該循環把文件的每一行都讀出
27             String line = in.nextLine();//讀出myfile.txt的下一行
28             System.out.println("第"+(number++)+"行的內容" +"="+line);
29             
30             Scanner linescanner = new Scanner(line);//對每一行的內容建立一個掃描器
31             linescanner.useDelimiter(" ");//使用空格作為分隔符
32             String name = linescanner.next();
33             String math = linescanner.next();
34             String java = linescanner.next();
35             String ds = linescanner.next();
36             String avg = linescanner.next();
37             String total = linescanner.next();
38             System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total);
39         }
40         in.close();//讀入完畢,最後需要對其進行close。    
41 
42  }
43 }

按上述步驟導入運行截圖如下:

技術分享圖片

實驗7:按照實驗5的操作步驟,導入第3章示例程序,每個示例程序從語法、算法兩個角度總結學習內容。

1)測試Retirement.javaRetirement2.javaLotteryOdds.java掌握循環控制結構;

1)

技術分享圖片

2)

技術分享圖片

3)

技術分享圖片

2)測試BigIntegerTest.java,掌握大數值類的用法;

技術分享圖片

3)測試LotteryDrawing.java,掌握數組的用法;

技術分享圖片

4)測試CompoundInterest.java,掌握多維數組的用法;

技術分享圖片

5)測試LotteryArray.java,掌握不規則數組的用法。

技術分享圖片

第三部分:實驗總結

通過本周學習,學習到了Java的一些基本內容,認識到其語言確實與C語言極其相似,學完C語言很容易理解其中一些內容,在做實驗的過程中對理論知識部分有了更深一層的理解和體會,。每個實驗的語言都值得仔細體會和玩味,尤其在實驗7中,通過測試Retirement.javaRetirement2.javaLotteryOdds.java等示例程序基本認識了循環控制結構、大數值類的用法、數組的用法、多維數組的用法和不規則數組的用法,除此之外,也通過幾個實驗熟悉了文件的導入與輸出。但隨著學習的深入,也讓我發現了更多的問題和疑惑,我想我還需要更多的時間去琢磨這門語言!

楊其菊201771010134《面向對象程序設計Java》第二周學習總結