項目 內容 這個作業屬於哪個課程 https://www.cnblogs.com/nwnu-daizh/ 這個作業的要求在哪裡 https://www.cnblogs.com/nwnu-daizh/p/11475377.html 作業學習目標 第一部分:結合Java和C基礎語法的異同比較,總結本周理 ...
項目 |
內容 |
這個作業屬於哪個課程 |
https://www.cnblogs.com/nwnu-daizh/ |
這個作業的要求在哪裡 |
|
作業學習目標 |
|
第一部分:結合Java和C基礎語法的異同比較,總結本周理論知識 :
1.
1.1標識符
由字母,下劃線,美元符號,數字組成(首字母不能是字母);
1.2關鍵字
class、public、try、catch、import。。。(僅舉例於c語言不相同的);
1.3解釋
“//”進行行註釋;
“/* */”進行塊註釋;
“/** */”可用來自動生成文檔的註釋;
2.數據類型
整型 | 浮點類型 | char類型 | Unicode和char類型 | boolean類型 |
用來表示沒有小數部分的數值,它允許是負數 | 用來表示有小數的部分 | 原來用來表示單個字元 | 用來判定邏輯條件 | |
int 4位元組 short 2位元組 long 8位元組 byte 1位元組 |
float 4位元組 double 8位元組 (!正無窮大!負無窮大!NaN) |
char | 只有兩個類型:false,true |
3.變數
3.1在Java中,每一個變數屬於一種類型。在聲明變數時,變數所屬的類型位於變數名之前。
3.2在Java中,一行可以聲明多個變數。逐一聲明每一個變數可以提高程式的可讀性。
3.3變數的初始化
1>一個變數聲明後,必須通過賦值語句對它進行明確的初始化——永遠不要使用一個未初始化的變數的值。
2>在Java中,可以在代碼的任何位置進行變數聲明。變數的聲明應該儘可能地靠近變數第一次使用的地方,方便閱讀和使用。
3>在Java中,不能在同一作用域內聲明兩個同名的變數。
3.4常量的定義
1>在Java中,使用關鍵字final來指示常量。習慣上常量名都用大寫。
final double CM_PER_INCH=2.54;
2>關鍵字final表示只能對變數賦一次值,其值一旦設定,在後續代碼中不能再對其進行修改。
3>在Java中,經常希望某個常量可以在一個類中的多個方法中使用,通常將這些常量稱為類常量。可以使用關鍵字 static final 聲明一個類常量( class constants)。
4.運算符
[ ]、() (方法調用) 從左到右
! ~ ++ -- +(一元) –(一元) ()(強制類型轉換) new 從右到左
* / % 從左到右
+ - 從左到右
<< >>(算術右移) >>>(邏輯右移) 從左到右
< <= > >= instanceof 從左到右
== != 從左到右
& 從左到右
^ 從左到右
| 從左到右
&& 從左到右
|| 從左到右
?: 從右到左
= += -= *= /= %= &= |= ^= <<= >>= >>>= 從右到左
5.字元串
1>在Java中,字元串被當作對象來處理。
2>程式中需要用到的字元串大致分為兩大類:
創建之後不會再做修改和變動的不可變字元串String類
創建之後允許再做更改和變化的構建字元串StringBuilder類
3>使用“”定義字元串
4>Java中會自動為字元串常量生成一個String類的對象,可以直接初始化String對象。
6.輸入輸出技術;
1>鍵盤輸入:
Scanner in=new Scanner(System.in);
int cnt=in.nextInt();
2>輸出
system.out.print();
7.控制流程
控制流程 | |
分支 | 迴圈 |
if-else語句 switch語句 |
for迴圈語句 while迴圈語句 do-while語句 |
**不同於C語言的java特有的迴圈for each,可以用來處理數組中的每個元素而不必為指定下標值而分心
語句格式:
for(variable:collection)statement
8.數組
1>數組是一種數據結構,它是有序數據的集合,數組中的每個元素的數據類型都是相同的。
2>對元素的確定是由數組名和它的下標實現的,
第二部分:實驗部分
實驗名稱:實驗二 Java基本程式設計
1. 實驗目的:
(1)進一步熟悉命令行和IDE兩種方式下java程式開發的基本步驟;
(2)掌握Eclipse集成開發環境下導入Java源程式的過程;
(3)掌握Java語言構造基本程式的數據類型、變數、運算符、各類表達式、輸入輸出、流程式控制制的基本語法;
(4)掌握Math類、String類、StringBuilder類的用法。
3. 實驗步驟與內容:
實驗1 程式互評
實驗2 :編寫包含以下代碼片段的java應用程式,輸出字元串類對象s3的值。
String s1=“Hello!”; String s2=“World”; String s3=s1+s2;
源代碼
1 package MyProject; 2 3 public class Week2 { 4 5 public static void main(String[] args) 6 { 7 // TODO Auto-generated method stub 8 String s1 ="Hello!"; 9 String s2= "World"; 10 String s3=s1+s2; 11 System.out.println(s3); 12 } 13 14 }
運行結果
實驗3 :更改實驗2中s1、s2、s3為StringBuilder類對象,觀察程式運行結果並與實驗2結果進行對比,理解String類對象與StringBuilder類對象的區別。
源代碼
1 package MyProject; 2 3 public class Week2{ 4 public static void main(String[] args) 5 { 6 StringBuilder s1=new StringBuilder("Hello!"); 7 StringBuilder s2=new StringBuilder("world"); 8 StringBuilder s3=new StringBuilder(); 9 s3.append(s1); //append 字元拼接 10 System.out.println(s3); 11 } 12 }
運行結果
實驗4 :在命令行方式下調試運行下列程式,理解java應用程式命令行參數的用法。
源代碼
1 package MyProject; 2 3 public class Message 4 { 5 public static void main(String[] args) 6 { 7 if (args[0].equals("-h")) System.out.print("Hello"); 8 else if(args[0].equals("-g")) System.out.print("goodbye,"); 9 for(int i=1;i<args.length;i++) 10 System.out.print(" "+args[i]); 11 System.out.println("!"); 12 } 13 14 }
運行結果
實驗5 :1>java程式導入Eclipse環境下導入第3章示常式序InputTest.java步驟:
2>選擇File->import->File System->Next,打開文件導入視窗如下圖,點擊上方Browse選擇導入源程式並選中,點擊下方Browse選擇源程式導入位置為新項目InputTest/src位置後,點擊finish完成導入。
3>打開InputTest項目src文件夾的預設包,雙擊InputTest.java在IDE源程式編輯區打開文件。
4>右鍵單擊InputTest.java文件名打開快捷菜單,選擇Run as->java application運行此程式,結合程式運行結果,理解代碼中Scanner類對象用法,掌握java控制台輸入方法
源代碼
1 import java.util.*; 2 3 /** 4 * This program demonstrates console input. 5 * @version 1.10 2004-02-10 6 * @author Cay Horstmann 7 */ 8 public class InputTest 9 { 10 public static void main(String[] args) 11 { 12 Scanner in = new Scanner(System.in); 13 14 // get first input 15 System.out.print("What is your name? "); 16 String name = in.nextLine(); 17 18 // get second input 19 System.out.print("How old are you? "); 20 int age = in.nextInt(); 21 22 // display output on console 23 System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1)); 24 } 25 }
實驗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章3-3——3-4示常式序,掌握兩個程式迴圈控制結構的用途。
3-3源代碼
1 import java.util.*; 2 3 /** 4 * This program demonstrates a <code>while</code> loop. 5 * @version 1.20 2004-02-10 6 * @author Cay Horstmann 7 */ 8 public class Retirement 9 { 10 public static void main(String[] args) 11 { 12 // read inputs 13 Scanner in = new Scanner(System.in); 14 15 System.out.print("How much money do you need to retire? "); 16 double goal = in.nextDouble(); 17 18 System.out.print("How much money will you contribute every year? "); 19 double payment = in.nextDouble(); 20 21 System.out.print("Interest rate in %: "); 22 double interestRate = in.nextDouble(); 23 24 double balance = 0; 25 int years = 0; 26 27 // update account balance while goal isn't reached 28 while (balance < goal) 29 { 30 // add this year's payment and interest 31 balance += payment; 32 double interest = balance * interestRate / 100; 33 balance += interest; 34 years++; 35 } 36 37 System.out.println("You can retire in " + years + " years."); 38 } 39 }
運行結果
3-4源代碼
1 import java.util.*; 2 3 /** 4 * This program demonstrates a <code>do/while</code> loop. 5 * @version 1.20 2004-02-10 6 * @author Cay Horstmann 7 */ 8 public class Retirement2 9 { 10 public static void main(String[] args) 11 { 12 Scanner in = new Scanner(System.in); 13 14 System.out.print("How much money will you contribute every year? "); 15 double payment = in.nextDouble(); 16 17 System.out.print("Interest rate in %: "); 18 double interestRate = in.nextDouble(); 19 20 double balance = 0; 21 int year = 0; 22 23 String input; 24 25 // update account balance while user isn't ready to retire 26 do 27 { 28 // add this year's payment and interest 29 balance += payment; 30 double interest = balance * interestRate / 100; 31 balance += interest; 32 33 year++; 34 35 // print current balance 36 System.out.printf("After year %d, your balance is %,.2f%n", year, balance); 37 38 // ask if ready to retire and get input 39 System.out.print("Ready to retire? (Y/N) "); 40 input = in.next(); 41 } 42 while (input.equals("N")); 43 } 44 }
運行結果
實驗8 按照實驗5的操作步驟,導入第3章3-5示常式序,理解抽獎概率計算演算法。
1 import java.util.*; 2 3 /** 4 * This program demonstrates a <code>for</code> loop. 5 * @version 1.20 2004-02-10 6 * @author Cay Horstmann 7 */ 8 public class LotteryOdds 9 { 10 public static void main(String[] args) 11 { 12 Scanner in = new Scanner(System.in); 13 14 System.out.print("How many numbers do you need to draw? "); 15 int k = in.nextInt(); 16 17 System.out.print("What is the highest number you can draw? "); 18 int n = in.nextInt(); 19 20 /* 21 * compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k) 22 */ 23 24 int lotteryOdds = 1; 25 for (int i = 1; i <= k; i++) 26 lotteryOdds = lotteryOdds * (n - i + 1) / i; 27 28 System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!"); 29 } 30 }
運行結果
4. 實驗總結:
在經過實驗之後我瞭解到了Java語言有8種數據類型,其中4種整型、2種浮點類型、1種用於表示Unicode編碼的字元單元的字元類型char和1種用於表示真值的boolean類型。float類型的數值有一個尾碼F或者f,沒有尾碼的話就預設為double。在Java語言中,利用關鍵字final指示常量,一次。一旦被賦值之後,就不能夠再更改了。boolean類型值只有兩個,是 true 和false,Java語言中boolean和整形兩者之間不能相互轉換,數據之間進行運算時需要註意運算符的先後 順序。字元串包含兩類:創建之後不會再做修改和變動的不可變字元串String類;創建之後允許再做更改和變化的構建字元串StringBuilder類。在編寫程式的過程中需要註意文件的輸入與輸出。其餘的數組,控制流程和C語言大致類似,上周差不多就這些了。