更新時間:2020-07-20 15:31:07 來源:動力節點 瀏覽2321次
1、java中==和equals()的區別???
答:
簡單來說==適合應用于基本數據類型的比較,而重寫后equals()方法適合應用于引用類型的比較。原因在于基本類型變量直接存儲的是值本身,而引用類型變量存儲的是對象的引用,當引用相同時,用==比較,自然會是true,當引用不同時,用==比較,則會是false.equlals方法是object中的方法,對于所有繼承于object的類都會有該方法.
當使用equals方法是需對此方法進行重寫,如果沒有對equals方法重寫,則比較的是引用類型的,變量所指向的對象的地址,沒有重寫的equals,和==效果相同,只有重寫了equals,比較的才會是所指對象的內容。
2、java中String、StringBuild、StringBuffer的區別???
答:
String是不可變類,因此對String進行操作都會產生新的String對象,容易導致效率低下,浪費內存空間。因此,為了應對經常性的字符串操作,引入了StringBuffer、StringBuild這種字符串變量。
StringBufffer和StringBuild最大的區別,就是StringBuffer線程安全,但效率低,而StringBuild線程不安全,但效率高,且此兩者只能通過構造函數的方式初始化。而String可以通過構造函數和字面量復制兩種方式。
3、java中重載(overload)、重寫(override)的區別???
答:
1)重載是通過不同的方法參數來區分的,例如不同的參數個數、不同的參數類型、或者不同的參數順序。不能通過方法的訪問權限、返回值類型、和拋出異常類型類進行重載。
2)覆蓋是指子類函數覆蓋父類函數,覆蓋一個方法,并對其重寫。重寫需要注意,子類必須與父類中,被重寫的方法有相同的函數名、相同的參數、相同的返回值、以及拋出異常也必須保持一致。
4、java中接口和抽象類的區別???
答:
1)、抽象類和接口都不能直接實例化
2)、抽象類要被子類繼承(extends),接口要被類實現(implements)
3)、接口只能做方法的聲明,且所有方法訪問權限必須是public,抽象類中可以做方法聲明,也可以做方法的實現。
4)、接口中定義的變量只能是公共的靜態
常量,抽象類中的變量可以是普通變量。
5)、抽象類里的抽象方法必須全部被子類所實現,如果子類不能全部實現父類的抽象方法,那么該子類只能是抽象類。同理如果在實現接口的時候,如果不能實現接口方法,那么該類也只能為抽象類。
6)、抽象方法只能聲明,不能實現,接口是設計的結果,抽象類是重構的結果。
7)、抽象類里可以沒有抽象方法。
8)、一個類里有抽象方法,那么這個類只能是抽象類。
9)、抽象方法需要被實現,因此不能是私有的,也不能是靜態的。
10)、接口可以繼承接口,并可多繼承接口,但類只能單根繼承。
5、java中this和super的區別???
答:
1)、this三大作用
1、普通的直接引用(指向當前對象的指針)
2、形參與成員名字重名(用this區分)
3、引用構造函數
2)、super三大作用
1、普通的直接引用(指向當前對象的父類)
2、子類中的成員變量或者方法和父類成員變量和方法重名。
3、引用構造函數
super(參數):調用基類中的某一個構造函數(應該為構造函數中的第一條語句)
this(參數):調用本類中另一種形成的構造函數(應該為構造函數中的第一條語句)
super:它引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變量名super.成員函數據名(實參)\
this:它代表當前對象名(在程序中易產生二義性之處,應使用this來指明當前對象;如果函數的形參與類中的成員數據同名,這時需用this來指明成員變量名)
調用super()必須寫在子類構造方法的第一行,否則編譯不通過。每個子類構造方法的第一條語句,都是隱含地調用super(),如果父類沒有這種形式的構造函數,那么在編譯的時候就會報錯。
super()和this()類似,區別是,super()從子類中調用父類的構造方法,this()在同一類內調用其它方法。
super()和this()均需放在構造方法內第一行。盡管可以用this調用一個構造器,但卻不能調用兩個。
this和super不能同時出現在一個構造函數里面,因為this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,所以在同一個構造函數里面有相同的語句,就失去了語句的意義,編譯器也不會通過。
this()和super()都指的是對象,所以,均不可以在static環境中使用。包括:static變量,static方法,static語句塊。
從本質上講,this是一個指向本對象的指針,然而super是一個Java關鍵字。
以上就是動力節點java培訓機構的小編針對“Java互聯網面試題,經典必問問答”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習