201871010125王玉江第二十周總結
|
項目 |
內容 |
|
《面向對象程序設計(java)》 |
https://home.cnblogs.com/u/nwnu-daizh/ |
|
這個作業的要求在哪里 |
http://www.rzrgm.cn/nwnu-daizh/p/11475377.html |
|
作業學習目標 |
|
隨筆博文正文內容包括:
第一部分:結合Java和C基礎語法的異同比較,總結本周理論知識(30分)
1.標識符0標識符由字母、下劃線、美元符號和數字組成,且第一個符號不能為數字。 標識符可用作:類名、對象名、變量名、方法名、數組名、文件名等。關鍵字關鍵字就是Java語言中已經被賦予特定意義的一些單詞。常見有:class、public、try、catch、if、float、import、void等。關鍵字不做變量名。
2.注釋
//:行注釋。
/* */:段注釋。
/** */:自動生成文檔。
3.數據類型
整型:int,short,long byte。
int型 ,變量定義:int x;int height,age;對于int型變量,內存分配個4字節,占32位
short型 ,變量定義:short h;short m,n;對于short型變量,內存分配2個字節,占16位
long型 ,變量定義:long sum;long I,j.k;對于long型變量,內存分配8個字節,占64位
byte型 ,變量定義:byte w;byte x,y,z;對于byte型變量,內存分配個1字節,占8位
浮點型:float,double。
char類型。
布爾類型:Boolean。
4.變量
變量名必須是一個以字母開頭并由字母或數字構成的序列,變量中的所有字符都是有意義的,并且大小寫敏感,聲明一個變量之后,必須用賦值語句對變量顯式初始化。在java中不區分變量的聲明與定義。
常量:在java中利用final指示常量,常量名使用全大寫,可以使用關鍵字static final設置一個類常量,類常量的定義位于main方法的外部。
5.運算符
數學函數與常量:數學函數包含在Math類中。冪函數、三角函數、指數函數及它的反函數等。
Java還提供了兩個常量:Math.PI、Math.E
若不想在數學方法名和常量名前加前綴“Math.”,可在源文件頂部加上以下代碼即可:import static java.long.Math.*;
數據類型之間的轉換:
大多數的數值轉換是遵循優先級的關系自動完成的。
轉換原則如下:
如果兩個操作數中有一個是double類型的,則另一個將會轉換成double類型。
否則,如果兩個操作數中有一個是float類型的,另一個將會轉換成float類型。
否則,如果兩個操作數中有一個是long類型的,另一個將會轉換成long類型。
否則,兩個操作數都將轉換成int類型。
強制類型轉換:
強制類型轉換的語法:
(目標類型)變量名
在進行強制類型轉換時,當心丟失數據。
運算符:
運算符的優先級與結合性:
1. [ ]、() (方法調用) 從左到右
2 . ! ~ ++ -- +(一元) –(一元) ()(強制類型轉換) new 從右到左
3 .* / % 從左到右
4.+ - 從左到右
5.<< >>(算術右移) >>>(邏輯右移) 從左到右
6.< <= > >= instanceof 從左到右
7.== != 從左到右
8.& 從左到右
9.^ 從左到右
10.| 從左到右
11.&& 從左到右
12.|| 從左到右
13.?: 從右到左
14.= += -= *= /= %= &= |= ^= <<= >>= >>>= 從右到左
6.字符串:
Java字符串是Unicode字符的序列,它是組織字符的基本數據結構,用法類似于字符數組。有內置的字符串類型,在標準Java類庫中提供了一個Java預定義類String。在Java中,字符串被當作對象來處理。
程序中需要用到的字符串可以分為兩大類:創建之后不會再做修改和變動的不可變字符串String類;創建之后允許再做更改和變化的構建字符串StringBuilder類。
字符串常量: 使用“”定義字符串。Java會自動為字符串常量生成一個String類的對象,所以可以直接初始化String對象。
7.輸入輸出:
讀取輸入:通過控制臺進行輸入時,需要構造一個Scanner對象,并與“標準輸入流”System.in關聯。Scanner in = new Scanner(System.in);Scanner類定義在java.util包中,因此使用時需將相應的包加載進來。由于Scanner類輸入是可見的,所以不適用于從控制臺讀取密碼。
格式化輸出:使用System.out.print(x)將數值x輸出到控制臺上,這條命令將以x對應的數據類型所允許的最大非0數字位數打印輸出x。
文件輸入與輸出:要想對文件進行讀取,就需要一個用File對象構造一個Scanner對象;要想寫入文件,就需要構造一個PrintWriter對象。
8.控制流程:
用{}把一些語句括起來就構成了一個語句。
控制語句(程序控制流程由這些語言確定)
if 、switch、for、while、do-while
9.大數值:
如果基本的整型和浮點型數據無法達到要求的精度,那么可以使用java.math包中的兩個類,BigInteger和BigDecimal。這兩個類可以操作任意長的數字。BigInteger類實現了任意精度的整數運算,BigDecimal實現了任意精度的浮點運算。
10.數組:
數組是一種數據結構,它是有序數據的集合,數組中的每個元素的數據類型都是相同的。對元素的確定是由數組名和它的下標實現的,如a[0]代表數組a的第一個元素,a[1]代表數組a的第二個元素,依次類推。
數組的聲明:
一維數組格式:
數組元素類型 數組名字[];
數組元素類型[] 數組名字; //推薦使用
二維數組格式:
數組元素類型 數組名字[][];
數組元素類型[][] 數組名字;//推薦使用
其中數組元素類型可以為Java中的任意類型,包括基本類型和復合類型。與C/C++不同,Java在數組聲明時并不為數組分配內存。在Java中,數組是獨立的類,有自身的方法。一個數組是一個對象,它由基本數據類型組成。
數組的創建:數組聲明后,要用new運算符為其分配內存空間,分配內存空間時必須指明數組的長度。格式如下:
數組名字=new 數組元素類型[個數]
數字數組創建后,所有數組元素自動初始化為0;boolean數組創建后數組元素初始化為false;對象數組初始化為null.數組創建后不能再更改大小。
數組的初始化:
一維數組的初始化:在聲明數組的同時對數組的元素進行初始化,系統會自動按照所給的初值的個數,算出數組的長度,并分配相應的空間。在Java中,可以初始化一個匿名數組。
多維數組的初始化:系統會自動根據初始值的大小計算出數組的大小。Java語言中,二維數組被看作數組的數組,把數組當作對象來處理。
數組的操作:
數組拷貝:Java允許把一個數組變量拷貝給另一個變量時,兩個變量都指向相同的數組。如果只是想把一個數組中的值拷貝給另一個變量,就要使用Arrays類的copyOf方法:int[] copiedGirl = Arrays. copyOf(girl,girl.length);通過這個方法可以用來增加數組的大小:girl = Array. copyOf(girl, 2*girl.length);
數組排序:調用java.util.Arrays類中的 sort方法,可對一個數字數組進行排序。該方法采用優化快速排序算法。
多維數組:多維數組將使用多個下標訪問數組元素,它適合用于表示表格或更復雜的排列形式。
多維數組的傳統循環控制:
for(int i = 0; i < balances.length; i++)
for(int j = 0; j < balances[i].length; j++)
do something with balances[i][j]
多維數組的for each循環控制:
for(double[] row: balances)
for(double value: row)
do something with value
在程序設計時,如果需要存儲二維表格數據,其中每個數據的類型是一樣的,可采用二維數組。對二維數組的每個元素賦值一般是通過嵌套的二重循環來進行。
不規則數組:Java可以使用不規則數組,即數組的每一行有不同的長度。在創建不規則數組時,從最高維開始分別為每一維數組分配空間。
數組總結:數組使用之前要確定大小,可以在程序中根據需要動態生成數組(如用表達式計算出大小)。一旦生成數組,大小不可改變。Java不支持變長數組。數組的屬性—length : 數組元素的個數。Java中的數組作為一種對象類型,可以作為方法的參數,方法調用時傳的是指向數組的引用。
第二部分:實驗部分
實驗名稱:實驗二 Java基本程序設計(1)
1. 實驗目的:
(1)進一步熟悉命令行和IDE兩種方式下java程序開發的基本步驟;
(2)掌握Eclipse集成開發環境下導入Java源程序的過程;
(3)掌握Java語言構造基本程序的數據類型、變量、運算符、各類表達式、輸入輸出、流程控制的基本語法;
(4)掌握Math類、String類、StringBuilder類的用法。
3. 實驗步驟與內容:
實驗1 程序互評(10分)
實驗2 (5分)
程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
|
package JavaTest;public class Test {public static void main(String[] args) {String s1="Hello!";String s2="World";String s3=s1+s2;System.out.println(s3);}} |
這個程序的運行結果如下圖:

實驗3 (5分)
程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
|
package JavaTest;public class Test {public static void main(String[] args) {StringBuilder s1=new StringBuilder(" Hello! ");StringBuilder s2=s1;System.out.println(s2.deleteCharAt(6));}} |
這個程序的運行結果如下圖:

實驗4 (5分)
程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package JavaTest;public class Test { 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 java程序導入(5分)
程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.*;/*** This program demonstrates console input.* @version 1.10 2004-02-10* @author Cay Horstmann*/public class InputTest{public static void main(String[] args){Scanner in = new Scanner(System.in);// get first inputSystem.out.print("What is your name? ");String name = in.nextLine();// get second inputSystem.out.print("How old are you? ");int age = in.nextInt();// display output on consoleSystem.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));}} |
這個程序的運行結果如下圖:

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

實驗7 (5分)
(1)程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import java.util.*;/*** This program demonstrates a <code>while</code> loop.* @version 1.20 2004-02-10* @author Cay Horstmann*/public class Retirement{public static void main(String[] args){// read inputsScanner in = new Scanner(System.in);System.out.print("How much money do you need to retire? ");double goal = in.nextDouble();System.out.print("How much money will you contribute every year? ");double payment = in.nextDouble();System.out.print("Interest rate in %: ");double interestRate = in.nextDouble();double balance = 0;int years = 0;// update account balance while goal isn't reachedwhile (balance < goal){// add this year's payment and interestbalance += payment;double interest = balance * interestRate / 100;balance += interest;years++;}System.out.println("You can retire in " + years + " years.");}} |
這個程序運行結果如下圖:

(2)程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import java.util.*;/** * This program demonstrates a <code>do/while</code> loop. * @version 1.20 2004-02-10 * @author Cay Horstmann */public class Retirement2{ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("How much money will you contribute every year? "); double payment = in.nextDouble(); System.out.print("Interest rate in %: "); double interestRate = in.nextDouble(); double balance = 0; int year = 0; String input; // update account balance while user isn't ready to retire do { // add this year's payment and interest balance += payment; double interest = balance * interestRate / 100; balance += interest; year++; // print current balance System.out.printf("After year %d, your balance is %,.2f%n", year, balance); // ask if ready to retire and get input System.out.print("Ready to retire? (Y/N) "); input = in.next(); } while (input.equals("N")); }} |
這個程序運行結果如下圖:

實驗8 (5分)
程序代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.util.*;/** * This program demonstrates a <code>for</code> loop. * @version 1.20 2004-02-10 * @author Cay Horstmann */public class LotteryOdds{ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("How many numbers do you need to draw? "); int k = in.nextInt(); System.out.print("What is the highest number you can draw? "); int n = in.nextInt(); /* * compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k) */ int lotteryOdds = 1; for (int i = 1; i <= k; i++) lotteryOdds = lotteryOdds * (n - i + 1) / i; System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!"); }} |
程序運行結果如下圖:

4. 實驗總結:(10分)
通過第三章的學習,了解到了許多java編程中的注釋,數據類型:Java有8種數據類型,其中4種整型、2種浮點類型、1種用于表示Unicode編碼的字符單元的字符類型char和1種用于表示真值的boolean類型。運算符,變量,輸入輸出,字符串創建之后不會再做修改和變動的不可變字符串String類;創建之后允許再做更改和變化的構建字符串StringBuilder類,大數值,數組。
浙公網安備 33010602011771號