1. 程式人生 > 其它 >java基礎二

java基礎二

StringBuilder和StringBuffer都繼承自AbstractStringBuilder
StringBuilder效能高,當時執行緒不安全。
StringBuffer執行緒安全。

String不可變
value字元陣列使用final進行修飾,因此value的引用的地址不可變,但是這個地址內的東西是可以改變的,但由於string沒有給出改變這個地址內容的方法,所以不可變。
一些方法類似contact、replace等,看似改變了string,實際上在原始碼內只是返回了一個新的物件,但是原來的物件引用還是不變的。

字串常量池的作用瞭解嗎?
字串常量池 是 JVM 為了提升效能和減少記憶體消耗針對字串(String 類)專門開闢的一塊區域,主要目的是為了避免字串的重複建立。

反射
通過反射你可以獲取任意一個類的所有屬性和方法,你還可以呼叫這些方法和屬性。

反射機制優缺點

優點 : 可以讓咱們的程式碼更加靈活、為各種框架提供開箱即用的功能提供了便利
缺點 :讓我們在執行時有了分析操作類的能力,這同樣也增加了安全問題。比如可以無視泛型引數的安全檢查(泛型引數的安全檢查發生在編譯時)。另外,反射的效能也要稍差點,不過,對於框架來說實際是影響不大的。

註解
**Annontation **(註解) 是Java5 開始引入的新特性,可以看作是一種特殊的註釋,主要用於修飾類、方法或者變數。
註解本質是一個繼承了Annotation 的特殊介面:
註解只有被解析之後才會生效,常見的解析方法有兩種:

編譯期直接掃描 :編譯器在編譯 Java 程式碼的時候掃描對應的註解並處理,比如某個方法使用@Override 註解,編譯器在編譯的時候就會檢測當前的方法是否重寫了父類對應的方法。
執行期通過反射處理 :像框架中自帶的註解(比如 Spring 框架的 @Value 、@Component)都是通過反射來進行處理的。
JDK 提供了很多內建的註解(比如 @Override 、@Deprecated),同時,我們還可以自定義註解。

什麼是序列化?什麼是反序列化?
如果我們需要持久化 Java 物件比如將 Java 物件儲存在檔案中,或者在網路傳輸 Java 物件,這些場景都需要用到序列化。

簡單來說:

序列化: 將資料結構或物件轉換成二進位制位元組流的過程
反序列化:將在序列化過程中所生成的二進位制位元組流轉換成資料結構或者物件的過程

序列化的主要目的是通過網路傳輸物件或者說是將物件儲存到檔案系統、資料庫、記憶體中。