Java面試題總結-Day2
阿新 • • 發佈:2018-10-31
Java面試題總結-Day2
Table of Contents
1 面試題-Day2
1.1 String和StringBuffer,StringBuilder的區別是什麼?String為什麼是不可變的?
1.1.1 可變性
- String類中使用字元陣列:
private final char value[]
儲存字串,所以String物件是不可變的. - StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字元陣列
char[] value
儲存字串,這兩種物件都是可變的.
1.1.2 執行緒安全性
- String物件是你不可變的,也就是可以理解為常量,執行緒安全.
- AbstractStringBuilder是StringBuilder和StringBuffer的公共父類,定義了一些字串的基本操作,如expandCapacity,append,insert,indexOf等公共方法.
- StringBuffer對AbstractStringBuilder的公共方法添加了同步鎖或者對呼叫的方法加了同步鎖,所以是執行緒安全的.
- StringBuilder並沒有對AbstractStringBuilder的公共方法新增同步鎖,所以是非執行緒安全的.
1.1.3 對於三者使用總結
- 如果操作少量的資料用String.
- 單執行緒操作字串緩衝區下操作大量資料用StringBuilder.
- 多執行緒操作字串緩衝區下操作大量資料用StringBuffer.
1.2 什麼是反射機制?反射機制的應用場景有哪些呢?
Date: 2018-10-31 22:51
Created: 2018-10-31 三 23:21