疯狂java讲义第六章课后习题答案
1.通過抽象類定義車類的模板,然后通過抽象的車類來派生拖拉機、卡車、小轎車。
瘋狂java講義第六章課后第1題答案
2.定義一個接口,并使用匿名內部類方式創建接口的實例。
瘋狂java講義第六章課后第2題答案
3.定義一個函數式接口,并使用Lambda表達式創建函數式接口的實例。
瘋狂java講義第六章課后第3題答案
4.定義一個類,該類用于封裝一桌梭哈游戲,這個類應該包含桌上剩下的牌的信息,并包含5個玩家的狀態信息:他們各自的位置、游戲狀態(正在游戲或已放棄)、手上已有的牌等信息。如果有可能,這個類還應該實現發牌方法,這個方法需要控制從誰開始發牌,不要發牌給放棄的人,并修改桌上剩下的牌。
瘋狂java講義第六章課后第4題答案
補充習題
1、嘗試把Integer類型自動拆箱成boolean,嘗試把boolean自動裝箱成Integer
會產生不兼容類型報錯
因為用了new Integer(1)
學到了一個編譯指令
-Xlint:deprecation
自動拆箱也會報不兼容類型的錯誤
2、操作書171頁提供的方法。
在后面有操作
3、重寫dog和person的equals方法,讓他們相等。
瘋狂java講義第六章補充習題第3題答案
4、創建一個單例類,并調用它創建多個對象,進行 = =比較,查看輸出結果。
瘋狂java講義第六章補充習題第4題答案
5、精確的使用final修飾類或實例變量。
瘋狂java講義第六章補充習題第5題答案
6、自己試著寫一個抽象類,包含抽象方法的和不包含抽象方法的。再寫一個包含抽象方法的普通類,并嘗試創建他們的實例
抽象類不包含抽象方法:依然不能創建實例
包含抽象方法的普通類,連編譯都過不了
7、嘗試使用中介模式來組合類。這里說的中介模式,其實就是工廠模式,但是中介更形象,更容易理解
瘋狂java講義第六章補充習題第7題答案
8、嘗試寫一個類,包含一個非靜態類,看看初始化的時候會不會和非靜態類一起初始化。
非靜態內部類,不能有靜態聲明
而經過試驗靜態內部類并不會跟隨外部類第一次被創建而初始化,如果沒有在構造器或者初始化塊中顯式聲明的話
9、使用jar命令。
瘋狂java講義第六章補充習題第9題答案
10、嘗試創建對象的,軟弱虛引用,結合強制垃圾回收進行測試,并說出他們的區別
StrongReference:就是我們正常使用的引用,只要有這個引用在,不論內存空間是否足夠,都不會被垃圾回收器回收;
SoftReference是除了強引用以外,引用最強的,只要有這個引用在,只要系統內存足夠,這個對象就不會被垃圾回收器回收
WeakReference:當垃圾回收機制啟動的時候,就會被回收,不管有沒有這個弱引用。
PhantomReference:虛引用,這個我猜測大概是引用都不能調用對象,所以比弱引用更弱,等會兒試一下,看看是不是這樣。是的,連get()方法都返回null,只是在被回收以后,rq的poll()方法會返回這個引用的引用變量,get()依舊返回null
使用PhantomReference必須在構造器傳入一個ReferenceQueue()對象,
11、嘗試直接調用finalize方法,
調用起來,其實就像是一個普通方法一樣,沒啥區別。
就算是之后強制垃圾回收,也沒有任何問題。
12、嘗試強制垃圾回收。并測試結果。
瘋狂java講義第六章補充習題第12題答案
13、創建包含抽象方法的枚舉類
其實,在枚舉值后的花括號,是類似匿名類的實現,設不設置成抽象方法都一樣,只是設置了抽象方法就要求,匿名類一定要重寫,不然不能用。
瘋狂java講義第六章補充習題第13題答案
14、創建實現接口的枚舉類。并結合switch語句
和普通類實現接口是一樣的的實現方式
瘋狂java講義第六章補充習題第14題答案
15、創建普通枚舉類,并使用
就算把構造器設置成public都不能用new Gender()的方法來創建一個實例,構造器甚至不能用public修飾
瘋狂java講義第六章補充習題第15題答案
16、使用lambda表達式+arrays類
瘋狂java講義第六章補充習題第16題答案
17、說出lambda表達式和匿名內部類的聯系和區別,
瘋狂java講義第六章補充習題第17題答案
18、使用lambda表達式的升級版,方法引用和構造器引用
瘋狂java講義第六章補充習題第18題答案
19、創建匿名內部類并使用。
瘋狂java講義第六章補充習題第19題答案
20、創建內部類并在外部類內部使用內部類還有在外部類以外的地方使用內部類。(包括靜態和非靜態)并嘗試使用內部類訪問外部類的變量,使用外部類訪問內部類的變量
瘋狂java講義第六章補充習題第20題答案
21、創建非靜態內部類和靜態內部類。
瘋狂java講義第六章補充習題第21題答案
22、嘗試命令模式,以及命令模式和抽象類的區別。p203
模仿書上的案例,同樣對數組進行命令模式的處理
瘋狂java講義第六章補充習題第22題答案
23、使用接口,并且嘗試接口繼承接口,接口繼承類,接口實現接口。
接口中的變量默認用public static修飾
接口不能繼承類,
好像也不能實現接口,會報錯
24、說出abstract不能和哪幾個關鍵字使用,和為什么?
瘋狂java講義第六章補充習題第24題答案
25、嘗試緩存實例的不可變類。
瘋狂java講義第六章補充習題第25題答案
26、說出可變類和不可變類的區別,以及為什么要有不可變類。
可變類中至少有一個實例變量是可以修改的,而不可變類的所有實例變量都是不可修改的,也就是用final修飾了。
不可變類不僅僅是不可變,通過重寫equals和hashCode可以實現按照內容判斷兩個對象是否相等。
java提供的八個包裝類和String類都是不可變類,至于原因是什么,我不懂
看了一篇文章,不可變類,是線程安全的。讓并發編程變得更簡單深入理解Java中的不可變對象
27、創建final類,并嘗試繼承它
28、創建final方法,并嘗試重寫它
瘋狂java講義第六章補充習題第28題答案
30、嘗試創建宏變量。
import java.util.*; import java.util.stream.*; import javax.swing.*;public class Test {public static void main(String[] args){String one = "瘋狂Java講義";final String two1 = "瘋狂";final String two2 = "Java講義";String three = two1 + two2;System.out.println(one == three);} }31、說出final修飾基本類型變量和引用類型變量的聯系和區別。
聯系:二者都不能重新賦值
區別:引用類型變量不能重新賦值,并不代表他的實例變量或者類變量不能重新賦值。
32、創建final局部變量。
(臥槽)我感覺倒著來有點奇怪的感覺。是啊,我練題也感覺很奇怪,。。。
final局部變量,可以不賦值,但是final修飾的類變量和實例變量不行
33、按照書上說的地方模仿著自己實現一個枚舉類。
其實有幾個要點,
(1)把構造器設置為private
(2)提前聲明靜態變量,也就是要成為枚舉值的那些變量,需要用public static final 進行修飾
(3)提供一個get枚舉類的方法,和getprivate變量的方法。
瘋狂java講義第六章補充習題第33題答案
34、創建局部內部類。
import java.util.*; import java.util.stream.*; import javax.swing.*;public class Test {public static void main(String[] args){//局部內部類One one = new One(){public void info(){System.out.println("我是One的Info");}};one.info();} } class One {public void info(){} }35、使用parsexxx方法和valueOf方法,并說出他們的區別。
Character、String沒有parse,有valueOf()
Byte、Short、Integer、Long、Float、Double、Boolean都有
區別是。parseXXX()返回基本數據類型而valueOf()返回包裝類
36、使用包裝類的基本方法
和39題一樣,
37、使用Character的各種工具方法
和39題重復
38、熟悉lambda表達式的幾種簡化寫法。
(1)當只有一個參數的時候可以省略括號,但沒有參數的時候必須有一個空括號
(2)當只有一條語句的時候,可以省略花括號,如果需要返回值,并且也只有一條語句的時候,省略花括號還可以省略return,把這唯一一條語句當成返回值
39、使用八個基本數據類型的一些方法和變量
詳細使用java八個包裝類的方法和打印類變量
42、使用八個基本類型的xxxSequence,我猜測,這個大概是數組的包裝類,因為瘋狂中沒有提到。猜的很好,根本不是,下次不要再猜了,不會的就百度,不要說不會。八個基本類型只有CharSequence。
瘋狂java講義第六章補充習題第42題答案
43、使用String、StringBuilder和StringBuffer
測試一下StringBuffer的線程安全性
使用String、StringBuilder和StringBuffer
44、疑惑232,final和abstract不能同時使用,所以抽象枚舉類可以創建子類,而非抽象枚舉類,自動用final修飾,不能創建子類。從自己制作的枚舉類可以看出,枚舉類是不能new的,只能在類內部new
瘋狂java講義第六章補充習題第44題答案
45、為什么,數據庫連接和網絡IO會被說成物理資源,和堆內存中的對象有什么區別嗎?
這個問題,先放著。
46、使用Charset類,
瘋狂java講義第六章補充習題第46題答案
47、說出強軟弱虛引用的區別和作用。
強引用:可達狀態,不可能被垃圾回收機制回收。作用,可以隨時調用,不怕在堆區的對象被回收后,導致NullPointer錯誤。
軟引用:內存空間足夠的時候,和強引用相同。內存空間不足的時候,可能被垃圾回收機制回收。作用,通常用于對內存敏感的程序。但是什么是內存敏感的程序呢?
弱引用:垃圾回收機制運行的時候,就會被回收。它和失去引用的對象的區別是,它可以調用。
虛引用:完全類似于沒有引用,也就是不能調用的弱引用。主要用于跟蹤對象被垃圾回收的狀態。虛引用不能單獨使用,必須和引用隊列聯合使用。
因為書上的練習,肯定寫過了,所以先放著。
總結
以上是生活随笔為你收集整理的疯狂java讲义第六章课后习题答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 傅里叶变换进行缺陷检测detect_in
- 下一篇: 一文学会,胶位偏移、缺胶、断胶、溢胶检测