1.對象的可變與不可變html
String類中使用字符數組來保存數據,由於有「final」修飾符,因此string對象是不可變的。以下:java
private final char value[];git
StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數組保存數據,這兩種對象都是可變的。以下:正則表達式
char[] value;數組
2.是不是線程安全安全
String中的對象是不可變的,也就能夠理解爲常量,因此是線程安全。數據結構
AbstractStringBuilder是StringBuilder與StringBuffer的公共父類,定義了一些字符串的基本操做,如expandCapacity、append、insert、indexOf等公共方法。多線程
StringBuffer對方法加了同步鎖或者對調用的方法加了同步鎖,因此是線程安全的。app
3.StringBuilder與StringBuffer共同點框架
StringBuilder與StringBuffer有公共的抽象父類AbstractStringBuilder。
抽象類與接口的一個區別是:抽象類中能夠定義一些子類的公共方法,子類只須要增長新的功能,不須要重複寫已經存在的方法;而接口中只是對方法的申明和常量的定義。
StringBuilder、StringBuffer的方法都會調用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer會在方法上加synchronized關鍵字,進行同步。
若是程序不是多線程的,那麼使用StringBuilder效率高於StringBuffer。
在編譯的時候出現了這個錯誤提示;
解答:檢查了代碼沒有任何問題出現,參考以前發生過的錯誤,我首先分析了緣由,這應該是須要多個文件共同編譯致使的。隨後我查閱資料並詢問同窗,找到了一種辦法,就是將相關的文件加以相同的前綴,而後統一編譯、運行。就好比E9_1 E9_2 E9_3,而後用命令javac E9*.java來進行編譯運行。雖然使得類名沒意義,可是能解決問題。能夠在此基礎上再尋求更好的解決方案。
錯題1:
父類中有個public void fight(),子類中有個public void fight( Weapon w),這兩個方法的關係是Override.
A.true
B.false
解析:子類重寫的方法,方法名字、參數個數、參數類型和父類的方法徹底相同。這裏是重載.
錯題2:
下列關於abstract關鍵字的說法,正確的是
A.可使用static修飾abstract方法。
B.非abstract類中不能夠有abstract方法。
C.不能使用new建立abstract類的對象。
D.不容許使用final和abstract同時修飾一個方法.
E.可使用public abstract void eat(){};來聲明抽象方法eat()。
F.抽象方法只保留方法的功能,而具體的執行,交給繼承抽象類的子類,由子類重寫此抽象方法。
解析:5.9節。A項:abstract關鍵字不能應用於static、private或final 方法。E項:不能有方法體。
這周的內容比前兩週明顯多了很多,並且是過去沒有接觸過的新知識和新概念,理解起來須要必定的時間,編寫代碼也要一步一步地努力提升。我對這些新知識如今還掌握得不夠熟練,但願多花時間敲代碼後可以熟練應用。我以爲課前預習是很是有必要的,若是不及時掌握那麼會被落下不少不少,跟着大部隊一塊兒前進纔是最好的,結對學習也初次體驗了樂趣,相信之後會愈來愈好!