1. 程式人生 > >錯題集01

錯題集01

接口隔離原則 pac 我們 cte inversion 抽象 weight 當前 基本原則

技術分享圖片

總結:

在Java中修飾符總共有一下幾種:
1.訪問控制修飾符
分別有:public private protected,缺省
2.其它修飾符
分別有:abstract,final,static,native,synchronized,transient,volatile等
對於形式參數只能用final修飾符,其它任何修飾符都會引起編譯器錯誤 。但是用這個修飾符也有一定的限制,就是在方法中不能對參數做任何修改。
不過一般情況下,一個方法的形參不用final修飾。只有在特殊情況下,那就是:方法內部類。
一個方法內的內部類如果使用了這個方法的參數或者局部變量的話,這個參數或局部變量應該是final。

因為字段修飾符包括很多(上面寫的),但是方法修飾符只能用final這一個修飾符。

參數可以是值也可以是對象,且實參才是真正被傳遞的參數,形參就像局部變量

技術分享圖片

總結:一個文件中可以有多個類,如果沒有public類,則可以與任意類名相同,如果有public類則文件名必須與此類名相同,因為一個文件中只能有一個public類。

如果文件中只有一個類,則文件名必須與類名相同

技術分享圖片

總結:

其中涉及:靜態初始化代碼塊、構造代碼塊、構造方法
當涉及到繼承時,按照如下順序執行:
1、執行父類的靜態代碼塊
static {
System.out.println("static A");
}

輸出:static A
2、執行子類的靜態代碼塊
static {
System.out.println("static B");
}
輸出:static B
3、執行父類的構造代碼塊
{
System.out.println("I’m A class");
}
輸出:I'm A class
4、執行父類的構造函數
public HelloA() {
}
輸出:無
5、執行子類的構造代碼塊
{
System.out.println("I’m B class");
}
輸出:I'm B class
6、執行子類的構造函數
public HelloB() {
}
輸出:無

技術分享圖片

總結:技術分享圖片

G1收集器已在JDK 1.7 u4版本正式投入使用。

技術分享圖片

總結:a,b,x,y就是四個指針。y本來指向的是b所指向的對象,但是一個“=”,y就指向了x所指向的目標即是a指向的對象,

因此原來b所指向的目標並沒有發生任何改變。與y不同的是,x進行的是對象操作,此時此對象在內存中是真正的本質上的改變。

技術分享圖片

總結:五個基本原則:
單一職責原則(Single-Resposibility Principle):一個類,最好只做一件事,只有一個引起它的變化。單一職責原則可以看做是低耦合、高內聚在面向對象原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。
開放封閉原則(Open-Closed principle):軟件實體應該是可擴展的,而不可修改的。也就是,對擴展開放,對修改封閉的。
Liskov替換原則(Liskov-Substituion Principle):子類必須能夠替換其基類。這一思想體現為對繼承機制的約束規範,只有子類能夠替換基類時,才能保證系統在運行期內識別子類,這是保證繼承復用的基礎。
依賴倒置原則(Dependecy-Inversion Principle):依賴於抽象。具體而言就是高層模塊不依賴於底層模塊,二者都同依賴於抽象;抽象不依賴於具體,具體依賴於抽象。
接口隔離原則(Interface-Segregation Principle):使用多個小的專門的接口,而不要使用一個大的總接口

技術分享圖片

總結:Spring並沒有為我們提供日誌系統,我們需要使用AOP(面向方面編程)的方式,借助Spring與日誌系統log4j實現我們自己的日誌系統。

技術分享圖片

技術分享圖片

總結: 這裏java T11 a b c表示 運行java字節碼文件 T11,顯然根本沒有這個類,會報找不到類異常,但即使命令輸入正確java f a b c,參數為 a b c只輸入了三個參數,且args是數組下標從0開始,而程序中使用到agrs[3]顯然又數組越界

技術分享圖片

總結:

readObject():從文件中還原對象     clone():復制,拷貝對象(設計深淺拷貝)

技術分享圖片

技術分享圖片

總結:

抽象類

特點:

1.抽象類中可以構造方法

2.抽象類中可以存在普通屬性,方法,靜態屬性和方法。

3.抽象類中可以存在抽象方法。

4.如果一個類中有一個抽象方法,那麽當前類一定是抽象類;抽象類中不一定有抽象方法。

5.抽象類中的抽象方法,需要有子類實現,如果子類不實現,則子類也需要定義為抽象的。

接口

1.在接口中只有方法的聲明,沒有方法體。

2.在接口中只有常量,因為定義的變量,在編譯的時候都會默認加上

public static final

3.在接口中的方法,永遠都被public來修飾。

4.接口中沒有構造方法,也不能實例化接口的對象。

5.接口可以實現多繼承

6.接口中定義的方法都需要有實現類來實現,如果實現類不能實現接口中的所有方法

7.則實現類定義為抽象類。

技術分享圖片

總結:

引用數據類型是引用傳遞(call by reference),基本數據類型是值傳遞(call by value)

值傳遞不可以改變原變量的內容和地址---》原因是java方法的形參傳遞都是傳遞原變量的副本,在方法中改變的是副本的值,而不適合原變量的

引用傳遞不可以改變原變量的地址,但可以改變原變量的內容---》原因是當副本的引用改變時,原變量 的引用並沒有發生變化,當副本改變內容時,由於副本引用指向的是原變量的地址空間,所以,原變量的內容發生變化。

結論:1.值傳遞不可以改變原變量的內容和地址;

2.引用傳遞不可以改變原變量的地址,但可以改變原變量的內容;


錯題集01