-
面向對象的特性有哪些?
-
繼承:繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱爲類繼承。新類繼承了原始類的特性,新類稱爲原始類的派生類(子類),而原始類稱爲新類的基類(父類)。派生類可以從它的基類那裏繼承方法和實例變量, 並且類可以修改或增加新的方法使之更適合特殊的需要。
-
封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。
-
多態性:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行爲共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。
-
-
int 和 Integer有什麼區別?
int是Java的原始數據類型,Integer是Java爲int提供的封裝類。
-
String 和 StringBuffer的區別?
兩個都是可以存儲字符串,String類提供了數值不可改變的字符串,而StringBuffer類可修改。此時,可能會有朋友說:“String類也可以修改的“。沒錯,String類確實可以修改,但String類重新修改後,其實對象已經改變了。我們經常通過哈希值來判定是否同一個對象。詳情見下面:
public class TestStringANDStringBuffer {
public static void main(String[] args) {
// 初始值
String str = "string";
// 哈希值
int strHC1 = str.hashCode();
System.out.println("String 比對:");
System.out.println("str初試值:" +str);
// 修改str內容
str = "string-xiugaihou";
// 哈希值
int strHC2 = str.hashCode();
System.out.println("str修改後:" + str);
System.out.println("------對比兩個哈希值是否一樣------");
System.out.println("strHC1:" + strHC1 +" --- strHC2:" + strHC2);
// 初始值
StringBuffer sb = new StringBuffer("stringbuffer");
// 哈希值
int sbHC1 = sb.hashCode();
System.out.println("StringBuffer 比對:");
System.out.println("sb初試值:" +sb);
// 修改sb內容
sb = sb.append("-xiugaihou");
// 哈希值
int sbHC2 = sb.hashCode();
System.out.println("sb修改後:" + sb);
System.out.println("------對比兩個哈希值是否一樣------");
System.out.println("sbHC1:" + sbHC1 +" --- sbHC2:" + sbHC2);
}
}
代碼運行後結果爲:
String 比對:
str初試值:string
str修改後:string-xiugaihou
------對比兩個哈希值是否一樣------
strHC1:-891985903 --- strHC2:-1716910841
StringBuffer 比對:
sb初試值:stringbuffer
sb修改後:stringbuffer-xiugaihou
------對比兩個哈希值是否一樣------
sbHC1:1163157884 --- sbHC2:1163157884
由運行結果可見,String改變賦值後,哈希值也改變,所以對象已經不是初識那個。而StringBuffer則不會。所以,爲了代碼更加規範,我們一般都會採用StringBuffer來構造動態字符串。
只要自己有時間,都儘量寫寫文章,與大家交流分享。
本人公衆號:
CSDN博客地址:https://blog.csdn.net/ispeasant
個人博客地址:http://www.ispeasant.com/