201871010112-梁麗珍《面向對象程序設計(java)》第二週學習總結

 

項目html

內容java

這個做業屬於哪一個課程算法

<任課教師博客主頁連接>https://www.cnblogs.com/nwnu-daizh/數組

這個做業的要求在哪裏數據結構

<做業連接地址>https://www.cnblogs.com/nwnu-daizh/p/11475377.htmlapp

做業學習目標框架

 

                1. 適應老師教學方式,能按照自主學習要求完成本週理論知識學習;eclipse

                2. 掌握Java Application程序結構;函數

                3. 掌握Java語言的數據類型與變量;學習

                4. 學會使用Java運算符構造各種表達式;

                5. 掌握Java Application輸入輸出技術;

                6. 掌握Java流程控制技術(分支、循環);(重點)

                7. 掌握Math類、String類的用法。(難點)

第一部分:結合Java和C基礎語法的異同比較,總結本週理論知識

  第3章  Java的基本程序設計結構

1.總體基本知識框架:3.1   一個簡單的Java應用程序  3.2  註釋  3.3  數據類型  3.4  變量

              3.5 運算符  3.6  字符串  3.7  輸入輸出  3.8  控制流程

              3.9  大數值  3.10  數組

 

2.知識點:

  Java對大小寫敏感。

  Java定義類名規則:名字必須以字母開頭,後面能夠跟字母和數字的任意組合。長度基本上沒有限制。可是不能使用Java保留字做爲類名。

  標準的命名規則爲:類名是以大寫字母開頭的名詞。若是名字由多個單詞組成,每一個單詞的第一個字母都應該大寫。

  1)基本知識:

    Java中與C語言的不一樣:標識符可用 美圓符號 ;可做爲 類名,對象名

  2)數據類型:分爲整型、浮點、字符、布爾 四大類型;

    與C語言的不一樣:一、整型中的 byte型  二、布爾類型:boolean型

 

  3)字符串:

      

  4)變量、常量、運算符:

 

  5)數學函數與常量、隱士類型轉換、強制類型轉換:

 

  6)String類:

   7)輸入輸出:

      1.讀取輸入:經過控制檯進行輸入時,須要構建一個Scanner對象,並與「標準輸入流」System.in關聯。

      Scanner in = new Scanner(System.in);

    2.格式化輸出:使用System.out.print(x)將數值x輸出到控制檯上,這條命令將以x對應的數據類型所容許的最大非0數字位數打印出x。

    3.文件輸入與輸出:須要用一個File對象構造一個Scanner對象。如:PrintWriter out = new PrintWriter("myfile.txt"); 想寫入文件,就須要構造一個PrintWriter對象,在構造器中,只須要提供文件名。

  8)控制流程:Java有5種語句

    1.方法調用語句: System.out.println("Hello!");

    2.表達式語句:  x=23;

             i++;

    3.複合語句:用{ } 把一些語句括號起來就構成一個語句。

          {

            z=x+23;

            System.out.println("Hello!");

          }

       4.控制語句:if 、switch 、for 、while 、do-while

    5.packege語句和import語句

   9)大數值

    若是基本地整型和浮點型數據沒法達到要求地精度,那麼可使用Java.math包中地兩個類,BigInteger和BigDecimal。這兩個類能夠操做任意長地數字。

    BigInteger類實現了任意精度地整數運算,BigDecimal類實現了任意精度地浮點運算。

  10)數組

    1.數組時一種數據結構,它是有序數據地集合,數組中的每一個元素的數據類型都是相同的。

    2.對元素的肯定是由數組名和它的下標實現的,如a[0]表明數組a的第一個元素,a[1]表明數組a的第二個元素,以此類推。

    3.數組的建立:格式:數組名字 = new 數組元素類型【個數】   如:boy = new float[5];

    4.數字數組建立後,全部數組元素自動初始化爲0;boolean數組建立後數組元素初始化爲false;對象數組初始化爲null。

    5.數組建立後不能再更改大小。

  11)數組的初始化及匿名數組

              1.一維數組的初始化

    2.二維數組的初始化

    3.匿名數組

   12)for each循環

    for循環語句依次輸出a數組每一個元素的程序段,如:

      for(int i =0; i < a.length; i++)

        System.out.println(a[i]);

  13)數組的操做:

    1.數組拷貝  :Java容許把一個數組變量拷貝給另外一個變量時,兩個變量都指向相同的數組。

    2.數組排序:調用Java.util.Arrays類中的sort方法,可對一個數字數組進行排序。

  14)多維數組

  15)不規則數組

  16)數組總結:數組使用前要肯定大小,能夠在程序中根據須要動態生成數組(如用表達式計算出大小)。

         一旦生成數組,大小不可改變。Java不支持變成數組。數組的屬性——length:數組元素的個數。

         Java中的數組做爲一種對象類型,能夠做爲方法的參數,方法調用時傳遞的是指向數組的引用。

 

第二部分:實驗部分

實驗名稱:實驗二 Java基本程序設計(1)

1.  實驗目的:

(1)進一步熟悉命令行和IDE兩種方式下java程序開發的基本步驟;

(2)掌握Eclipse集成開發環境下導入Java源程序的過程;

(3)掌握Java語言構造基本程序的數據類型、變量、運算符、各種表達式、輸入輸出、流程控制的基本語法;

(4)掌握Math類、String類、StringBuilder類的用法。

3. 實驗步驟與內容:

  實驗1:java風格九九乘法表程序互評

評分要求:結合評分程序的運行狀況,給出評分程序成績,滿分5分,每一個錯誤扣1分,扣至0分爲止;

評分者每發現一個正確的錯誤,本人實驗1得分加1分,最高加5分。

 

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

String s1=「Hello!」;

String s2=「World」;

String s3=s1+s2;

 

代碼及操做運行結果以下:

package project2;

public class sss {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1="Hello!";  //用String定義s1字符串類型的變量,賦值"Hello!"
		String s2="World";   //用String定義s2字符串類型的變量,賦值"World"
		String s3=s1+s2;    //用String定義s3字符串類型的變量,賦值s1+s2
		System.out.println(s3); //輸出s3
		
	}

}

 

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

  1)將實驗2進行更改的代碼以及運行結果以下:

package project2;

public class hhh {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuilder s1=new StringBuilder("Hello!"); //建立StringBuilder對象s1並賦值爲"Hello!"
		StringBuilder s2=new StringBuilder("World"); //建立StringBuilder對象s2並賦值爲"World"
		StringBuilder s3=new StringBuilder(); //建立StringBuilder對象s3
		s3.append(s1); //調用append方法向s3添加s1
		s3.append(s2); //調用append方法向s3添加s2
		System.out.println(s3);  //輸出s3
	}

}

 

  2)String類對象與StringBuilder類對象的區別:

1.String

      1) 字符串是常量;

      2)String自己是不可改變的,它只能賦值一次,每次內容發生改變,都會生成一個新的String對象,而後原有的對象引用新的對象。(它們的值在建立以後不能更改)

      3)String實現字符串加法,會在內存中建立不少字符串佔用內存,佔用內存越多,程序的效率就越低。

      4)String操做示意圖

        

2.StringBuilder

      1)每次操做都是對自身對象進行操做,而不是產生新的對象,其所佔空間會隨着內容的增長而擴充;

      2)字符串緩衝區,能夠提升字符串的效率,支持可變的字符串;

      3)StringBuilder實現字符串加法,始終是一個數組,佔用內存少,因此效率高。

      4)若是須要用許多小段的字符串構建一個字符串,那麼,首先,構建一個空的字符串構建器:

                StringBuilder builder = new StringBuilder();

             當每次須要添加一部份內容時,就調用 append 方法。

                builder.append(ch); // appends a single character

                builder.append(str); // appends a string

             在須要構建字符串時就調用 toString 方法,將能夠獲得一個 String 對象,其中包含了構建器中的字符序列。

                String completedString = builder.toString();

       5)StringBuilder操做示意圖

 

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

1)程序代碼以下:

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(「!」);
  }
}

2) 運行以下:

3) Java程序中main方法裏存在「String[] args」參數: 

    1.  「String[] args」是命令行參數(其接收運行參數)

          Java程序運行的同時,能夠經過兩種方式將命令行參數賦給給「String[] args」:

一種是在Java命令行後面帶上參數,另外一種是經過編譯器(本文將用eclipse進行演示)進行輸入,以後虛擬機就直接把他們存放到「String[] args」數組中。

    2.  args是命令行參數,由於參數能夠爲多個,因此要用數組來存取咱們輸入的參數值。

 3. 針對以上程序,在命令行中調試運行:

        輸入 Java Message -h (或 Java Message -g)回車,即將參數賦給 args 數組,運行程序。

    4.若在eclipse中進行,右鍵找到run as,選擇Run Configurations,在文件Message中,找到它的 Arguments,在program arguments中輸入參數 -h (-g) 後點擊run便可。

 

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

  1)新建 java project

  2)選擇File->import->File ystem->Next,點擊上方Browse選擇導入源程序並選中,Browse選擇源程序導入位置爲新項目InputTest/src位置後,點擊finish完成導入。

  3) 打開InputTest項目src文件夾的缺省包,雙擊InputTest.javaIDE源程序編輯區打開文件。

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

 

  1.Scanner類對象用法

      1)使用Scanner的步驟:

    a: 必須導包 import java.util.Scanner; 可以使用快捷鍵ctril+shift+o

    b:建立對象 Scanner sc = new Scanner(System.in);

    c:調用方法 sc.xxx( )

   2.Scanner類的方法

    1)public int nextInt( ) : 讀取一個int類型的值

    2)public String nextLine( ):讀取一個String類型的值

    3)public boolean hasNextXxx():判斷是不是某種類型的元素

  3.Scanner類的方法總結:

    1)next( ): 只讀取輸入直到空格。它不能讀兩個由空格或符號隔開的單詞。此外,next()在讀取輸入後將光標放在同一行中。(next()只讀空格以前的數據,而且光標指向本行)

    2)nextLine():讀取輸入,包括單詞之間的空格和除回車之外的全部符號(即。它讀到行尾)。讀取輸入後,nextLine()將光標定位在下一行。

    3)nextline( ):只讀取數值,剩下的「\n」尚未讀取,並將光標放在本行中 。

    4)hasNextInt( ):判斷是不是int 類型的元素,進而獲取元素。

    5)next()方法並不能返回帶空格、Tab鍵、回車符的字符串,而nextLine能夠。

  4.上述程序中的,Scanner in=new Scanner(System.in);

               System.in 是得到一個鍵盤輸入流,監聽鍵盤輸入的數據,因此,Scanner in=new Scanner(System.in);就已經獲得了獲取鍵盤輸入的實列。

    Scanner 是一個類,in 是一個實列或者說是對象,new 是一個建立對象的方法…Scanner類表如今得到控制檯輸入,至關於與聲明一我的類(Scanner),這我的類是誰(in),後面新建立一我的類new Scanner(system.in),system.in 表示他有什麼特徵。換言之,就是,新建立一個輸入的Scanner 對象,而後賦值給in。

    在使用時要關閉 流 ,不然會有警報。

 

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

  1.導入WriteReadFileTest.java示例程序,運行程序結果以下:

   2.文件myfile.txt的內容

  3.使用 PrintWriter out = new PrintWriter("myfile.txt"); 寫入文件。創建掃描器 並 寫入內容out.println("");  最後關閉流 out.close(); 

 

  實驗7:按照實驗5的操做步驟,導入第3章3-3——3-4示例程序,掌握兩個程序循環控制結構的用途。

  1)導入的3-3示例程序以下:

  3-3 該程序使用了while語句循環,當條件爲true時,while循環執行一條語句(也能夠是一個語句塊);若是開始循環條件的值就爲false,則while循環體一次也不執行。

  語法結構: while(循環條件)

          {

            循環體;

          }

  while 循環語句首先檢測循環條件。所以,循環體中的代碼有可能不被執行。

  3-3的while循環:當 balance < goal 條件知足時,進入循環,當條件不知足時跳出。

 

  2)導入3-4示例程序以下:

  3-4 該程序使用了 do-while 循環語句,先執行語句(一般是一個語句塊),再檢測循環條件;循環體至少執行一次。

  語法結構: do {

        循環操做(先執行一遍循環操做)

         }while (循環條件); (分號不可少)

  符合條件,循環繼續執行;不然,循環退出。

   3)while 與 do-while 循環的不一樣點:

    1.語法、執行次序不一樣:while循環,先判斷,再執行; do-while 循環,先執行,再判斷。

    2.初始狀況不知足循環條件時:while循環一次都不會執行;do-while循環無論任何狀況都至少執行一次。

 

  實驗8:按照實驗5的操做步驟,導入第3章3-5示例程序,理解抽獎機率計算算法。

  1)導入3-5示例程序以下:

  3-5該程序使用了for循環,此程序用來計算抽獎中獎的機率,若是從n個數字中抽取K個數字,可用如下公式進行計算獲得結果。

  compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)

  使用for循環語句進行計算則有:

int lotteryOdds = 1;
      for (int i = 1; i <= k; i++)
         lotteryOdds = lotteryOdds * (n - i + 1) / i;

 

4.實驗總結:

  在這次實驗中,我進一步熟悉命令行和IDE兩種方式下Java程序開發的基本步驟,掌握了eclipse集成開發環境下導入Java源程序的過程,並完成了實驗;也掌握了Java語言構造基本程序的數據類型,變量,運算符,各種表達式,輸入輸出,流程控制的基本語法,Java與C語言有着不一樣的地方,經過對教材,課件,教學視頻以及百度查閱,實驗過程,理解掌握Math類、String類StringBuilder類的用法。本週的實驗難度不算大,再經過學長的視頻疑惑解答,給咱們講解了較爲難懂的地方,在聽懂以後比較順利的完成了實驗內容。但對於知識點的總結還存在些許不足的地方,若有些知識點沒能很好的補充,不是很全面,要將其餘細節的地方進一步補充完整。示例中經過while循環,do-while循環,for循環語句來實現程序,對於理解程序中的步驟原理有着些許的困難,但我相信多琢磨琢磨會明白透徹的,會愈來愈好的。

相關文章
相關標籤/搜索