1. 程式人生 > >20165312 2017-2018-2《JAVA程序設計》第7周學習總結

20165312 2017-2018-2《JAVA程序設計》第7周學習總結

發生 實例 大於 返回值 運算 tof 編譯錯誤 ret 調用

20165312 2017-2018-2《JAVA程序設計》第7周學習總結

一、對上周測試的查漏補缺

總的來說,我覺得上周兩個測試都挺難的,做測試也花費了很長的時間,我認為是因為書上的知識點很多,我還沒有理解好,所以還是要更加好好的看書,很多書上的知識點遺漏或者看過一遍就忘記了。

第五周課下測試(ch08 ch10)

  • 下列關於內部類的說法,正確的是( )

A . 其他類不可以用某個類的內部類聲明對象。

B . 內部類字節碼文件的名字格式是“外嵌類名$內部
類名”。

C . 內部類的類體可以聲明類變量和類方法。

D . 內部類在成員位置上,因此可以被private修飾。

答案:ABD(C項錯誤在內部類的類體中不可以聲明類變量和類方法。)

  • 如果超出JVM運行能力之外,如“byte[] arr=new byte[10241024600];”會拋出java.lang.OutOfMemoryError異常。

A . true

B . false

答案:B(對於嚴重的錯誤,通過Error類來描述,而對於非嚴重的問題,則是通過Exception類來進行描述的。)

  • 下列關於異常處理的說法,正確的是( )

A . 一旦try部分拋出異常對象,那麽try部分將立刻結束執行,轉向執行相應的catch部分。

B . catch代碼塊定義一定會執行的代碼,它通常用於關閉資源。

C . try-catch語句可以由幾個catch組成,分別處理發生的異常。

D . catch括號中列出的異常不得有繼承關系,否則會發生編譯錯誤。

答案:ACD(B項:finally代碼塊定義一定會執行的代碼,它通常用於關閉資源。對於異常的部分,如果沒有做finally處理,那麽這個程序是有缺陷的,每次調用完資源再把資源釋放掉是必須的,否則運行壓力會特別大。)

  • File類的對象主要用來獲取文件本身的一些信息,如對文件的讀寫操作、獲取文件所在目錄、文件長度或文件讀寫權限等。

A . true

B . false

答案:B(File類不涉及對文件的讀寫操作。)

  • 以下是File類構造方法的是( )

A . File(File parent, String child)

B . File(String pathname)

C . File(String parent, String child)

D . File(URI uri)

答案:ABCD

  • 以下關於File類常用方法的敘述,錯誤的是( )

A . public long length():獲取文件長度

B . public int hashCode():計算此文件的哈希碼

C . public String toString():返回此抽象路徑名的路徑名字符串

D . public Boolean isFile():判斷一個文件是否是普通文件,而不是目錄

答案:B(public int hashCode():計算此抽象路徑名的哈希碼。)

  • InputStream類繼承自FileInputStream,可以以字節為單位讀取文件。

A . true

B . false

答案:B(InputStream是父類)

  • 下列說法正確的是( )

A . 可以使用FileOutputStream類寫入文件。

B . FileOutputStream類的構造方法有FileOutputStream(File file)、FileOutputStream(String name)、FileOutputStream(File file, boolean append)等。

C . 對於FileOutputStream(String name)方法,參數name指定的文件稱為輸出流的源。

D . 如果輸出流指向的文件是已存在的文件,輸出流將刷新該文件,使得文件的長度為0。

答案:ABD(C中參數name指定的文件稱為輸出流的目的地。)

  • 下列關於BufferedReader和BufferedWriter的說法,錯誤的是( )

A . 通過調用BufferedReader對象的readLine()方法,可以讀取文本行。

B . BufferedReader有一個向文件寫入回行符的方法:newLine()。

C . 當BufferedWriter流調用flush()刷新緩存或調用close()方法關閉時,即使緩存沒有溢出,,也會將緩存的內容寫入目的地。

D . 可以將BufferedWriter流和FileWriter流連接在一起,然後使用BufferedWriter流將數據寫到目的地。

答案:B

  • 下列關於Scanner類的說法,正確的是( )

A . 使用Scanner和正則表達式來解析文件的特點是以空間換取時間。

B . 解析時如果單詞不是數字型單詞,調用nextInt()或nextDouble()方法將發生InputMismatchException異常。

C . 創建Scanner對象,指向要解析的文件,可以使用useDelimiter方法指定正則表達式作為分割標記。

D . 正則表達式\b((?!abc)\w)+\b可以用來匹配不包含abc的單詞。

答案:BCD(A中使用Scanner和正則表達式來解析文件的特點是以時間換取空間)

  • 下列哪個敘述是正確的?( )

A . 創建File對象可能發生異常。

B . BufferedRead流可以指向FileInputStream流。

C . BufferedWrite流可以指向FileWrite流。

D . RandomAccessFile流一旦指向文件,就會刷新該文件。

答案:C

第六周課下測試(ch08 ch15)

  • List接口的特點是?( )

A . 不允許重復元素,元素無順序

B . 不允許重復元素,元素有順序

C . 允許重復元素,元素有順序

D . 允許重復元素,元素無順序

答案:C

  • 下列關於LinkedList

A . public E getLast()返回此列表的最後一個元素。如果此列表為空,則拋出NoSuchElementException。

B . public void addFirst(E e) 將指定元素插入此列表的開頭。e為要添加的元素。

C . public boolean add(E e)等效於addLast(E)。

D . public boolean remove(Object o) 覆蓋類 AbstractCollection

答案:ABCD(通過查詢API)

  • 下列關於HashMap

A . public boolean isEmpty()如果此映射不包含鍵-值映射關系,則返回 true。

B . public V get(Object key)返回指定鍵所映射的值;如果此映射不包含該鍵的映射關系,則拋出異常。

C . public V put(K key, V value) 在此映射中關聯指定值與指定鍵。如果該映射以前包含了一個該鍵的映射關系,則以先定義的值為準。

D . public Object clone()返回此 HashMap 實例的淺表副本:並不復制鍵和值本身。

答案:AD(通過查詢API可知:B項:如果此映射不包含該鍵的映射關系,則返回null。C項:如果該映射以前包含了一個該鍵的映射關系,則舊值被替換)

  • 下列關於TreeSet

B . public boolean add(E e)將指定的元素添加到此 set。如果此 set 已經包含這樣的元素,則該調用不改變此 set 並返回 false。

C . public boolean addAll(Collection<? extends E> c)將指定 collection 中的所有元素添加到此 set 中。如果此 set 由於調用而發生更改,則返回 true。

D . public E lower(E e) 返回此 set 中嚴格小於給定元素的最大元素;如果不存在這樣的元素,則返回 null。

答案:BCD(A項:如果指定對象無法與該 set 中的當前元素進行比較,則拋出ClassCastException異常。)

  • 下列值不為true的表達式是( )

A . "john" = = "john"

B . "john".equals("john")

C . "john" = "john"

D . "john".equals(new String("john"))

答案:C

  • 使用構造方法String(byte[] bytes, int offset, int length, Charset charset),通過使用指定的 charset 解碼指定的 byte 子數組,構造一個新的 String。其中,offset 參數是子數組第一個字符的索引,count 參數指定子數組的長度。

A . true

B . false

答案:A

  • String類中的length()方法用來獲取一個String對象的字符序列的長度,單位為字節。

A . true

B . false

答案:B

  • public boolean startsWith(String prefix)方法,如果參數是空字符串,則拋出異常。

A . true

B . false

答案:B

  • 下列關於public int compareTo(String anotherString)的說法,正確的是( )

A . 按字典順序比較兩個字符串。該比較基於字符串中各個字符的 Unicode值。

B . 如果按字典順序此 String 對象位於參數字符串之前,則比較結果為一個正整數。

C . 如果它們在一個或多個索引位置上的字符不同,假設 k 是這類索引的最小值,compareTo 返回這兩個字符串在位置 k 處兩個char 值的差,即值:this.charAt(k)-anotherString.charAt(k)

D . 如果沒有字符不同的索引位置,則較短字符串的字典順序在較長字符串之前。在這種情況下,compareTo 返回這兩個字符串長度的差

E . compareTo 只在方法 equals(Object) 返回 true 時才返回 0。

答案:ACDE(B返回一個負整數)

  • 下列關於substring方法的說法,正確的是( )

A . public String substring(int beginIndex)返回的子字符串從指定索引處的字符開始,直到此字符串末尾。

B . public String substring(int beginIndex, int endIndex) 子字符串從指定的 beginIndex 處開始,直到索引 endIndex處的字符。

C . "emptiness".substring(9)返回值為""。

D . "smiles".substring(1, 5)返回值為"mile"。

E . 若beginIndex 大於 endIndex,則substring(int beginIndex, int endIndex)返回-1。

答案:ACD(B項:直到索引 endIndex - 1 處的字符。E項:拋出IndexOutOfBoundsException異常。)

  • 下列說法錯誤的是( )

A . java.util包中的Data類重寫了toString()方法。

B . Arrays和Point都繼承了toString方法。

C . 調用x.toString()方法的地方可以用""+x代替。

D . 定義int[] Numbers = {1, 2, 3}; String s1 = ""+Numbers;,則System.out.println(s1);調用了toString方法,可以將數組輸出。

答案:D(D項:若想打印數組,數組必須調用靜態方法Arrays.toString,也就是將以上程序中的String s1 = ""+Numbers;改為String s1 = Arrays.toString(Numbers);。如果要打印多維數組,則需要調用Arrays.deepToString方法。)

  • 下列關於字符串與字符數組、字節數組的說法,正確的是( )

A . getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin)方法的返回值為空。

B . srcEnd是字符串中要復制的最後一個字符的索引。

C . srcBegin 大於 srcEnd時,會拋出IndexOutOfBoundsException異常。

D . 要復制到 dst 子數組的字符從索引 dstBegin 處開始,並結束於索引dstbegin + (srcEnd-srcBegin) - 1

答案:ACD(B項:srcEnd是字符串中要復制的最後一個字符之後的索引。)

  • 下列關於正則表達式的說法,正確的是( )

A . \ba\w*\b匹配以字母a開頭的單詞

B . \d+匹配1個或更多連續的數字。

C . \b\w{6}\b 匹配6個及以上字符的單詞。

D . [0-9]代表的含意與\d就是完全一致的:一位數字

E . \S+匹配不包含空白符的字符串。

F . (\d{1,3}.){3}\d{1,3}用來匹配 IP地址。

答案:ABDE(C項:\b\w{6}\b 匹配剛好6個字符的單詞。F項: IP地址中每個數字都不能大於255,該表達式忽略了這個約束條件。正確的是((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。)

  • 下列關於Date類和Calendar類的說法,錯誤的是( )

A . 可以使用System類的靜態方法public long
currentTimeMillis()獲取系統當前時間。

B . Date類的public boolean equals(Object obj)方法覆蓋了類 Object 中的 equals。

C . 若比較兩個Calendar的時間日期先後,可以使用after()方法。after()返回值為布爾類型,其等價於compareTo(when)<0。

D . 使用Calendar類的靜態方法getInstance()可以初始化一個日歷對象。
考點:C項:其等價於compareTo(when)>0。

答案:C

  • 下列說法正確的是( )

A . Java 8之前,對日期進行運算,使用DateFormat類。

B . 需要人類能理解的時間,建議使用Date類的toString()。

C . 現在國際上通用的標準時間是GMT。

D . new Date(System.currentTimeMillis())等價於new Date()

答案:D

  • 下列關於Math類的說法,正確的是( )

A . public static double cbrt(double a) 返回 double 值的立方根。如果參數為 NaN,那麽結果為 NaN。

B . public static double cos(double a) 返回角的三角余弦。如果參數為 NaN 或無窮大,那麽結果為 NaN。

C . public static double floor(double a) 返回最大的(最接近正無窮大)double 值,該值小於等於參數,並等於某個整數。如果參數為 NaN 或無窮大,那麽結果為 NaN。

D . public static double log10(double a) 返回 double 值的底數為 10 的對數。如果參數為正 0 或負 0,那麽結果為負無窮大。

答案:ABD(C項:如果參數為 NaN、無窮大、正 0 或負 0,那麽結果與參數相同。)

  • 下列哪個表達式是正確的(無編譯錯誤)?( )

A . int m =Float.parseFloat("567");

B . int m =Short.parseShort("567")

C . byte m =Integer.parseInt("2");

D . float m =Float.parseDouble("2.9")

答案:C

  • 對於如下代碼,下列哪個敘述是正確的?( )

    public class E {
      public static void main (String args[]) {
    String s1 = args[1];
    String s2 = args[2];
    String s3 = args[3];
    System.out.println(s3); 
      }
    }

A . 程序出現編譯錯誤。

B . 無編譯錯誤,在命令行執行程序:“java E I love this game”,程序輸出this。

C . 無編譯錯誤,在命令行執行程序:“java E let us go”,程序無運行異常。

D . 無編譯錯誤,在命令行執行程序:“java E 0 1 2 3 4 5 6 7 8 9”程序輸出3。

答案:D

二、本周學習總結

遇到的問題以及解決方案

  • 博客裏的鏈接失效,我在網上下載了XAMPP,並根據老師的博客學習了數據庫.

技術分享圖片

技術分享圖片

  • 在IDEA中配置驅動mysql-connector-java-5.1.41-bin.jar時,用類似單元測試中加入junit.jar的方法尋找mysql-connector-java-5.1.41-bin.jar,但是我並沒有找到。
  • 解決方法:
    • 下載mysql-connector-java-5.1.46.zip
    • 解壓壓縮包
    • File->Projeat Structure
    • 點擊Dependencies -> 點擊右上方+ -> JARs ->找到解壓後壓縮包的位置 - > mysql-connector-java-5.1.41-bin.jar
  • 根據藍墨雲上的資源下載了WhiteStarUML,根據使用StarUML畫圖類學習使用了怎樣畫出UML
  • 運行測試類MessageDAODEmo.java時出現問題

技術分享圖片

然後根據報錯提示,發現時代碼出問題了,類名的大小寫搞錯了。

知識點總結

  • 連接數據庫
  • 條件與排序查詢:
    • where子語句select 字段 from 表名 where 條件
  • 更新、添加與刪除操作
    • 更新
      update 表 set 字段 = 新值 where <條件子句>
    • 添加
      insert into 表(字段列表) values (對應的具體的記錄)insert into 表 values (對應的具體的記錄)
    • 刪除delete from 表名 where <條件子句>
  • 使用預處理語句
  • 事務
    • setAutoCommit(booean b):方法關閉自動提交模式
    • commit():方法處理事務
    • rollback():方法處理事務失敗

代碼鏈接

代碼行數:

技術分享圖片

20165312 2017-2018-2《JAVA程序設計》第7周學習總結