20165312 2017-2018-2《JAVA程序設計》第7周學習總結
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 條件
- where子語句
- 更新、添加與刪除操作
- 更新
update 表 set 字段 = 新值 where <條件子句>
- 添加
insert into 表(字段列表) values (對應的具體的記錄)
或insert into 表 values (對應的具體的記錄)
- 刪除
delete from 表名 where <條件子句>
- 更新
- 使用預處理語句
- 事務
setAutoCommit(booean b)
:方法關閉自動提交模式commit()
:方法處理事務rollback()
:方法處理事務失敗
代碼鏈接
代碼行數:
20165312 2017-2018-2《JAVA程序設計》第7周學習總結