1. 程式人生 > >Java面試題總結-Day2

Java面試題總結-Day2

Java面試題總結-Day2

Table of Contents

1 面試題-Day2

1.1 String和StringBuffer,StringBuilder的區別是什麼?String為什麼是不可變的?

1.1.1 可變性

  1. String類中使用字元陣列: private final char value[] 儲存字串,所以String物件是不可變的.
  2. StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字元陣列 char[] value 儲存字串,這兩種物件都是可變的.

1.1.2 執行緒安全性

  1. String物件是你不可變的,也就是可以理解為常量,執行緒安全.
  2. AbstractStringBuilder是StringBuilder和StringBuffer的公共父類,定義了一些字串的基本操作,如expandCapacity,append,insert,indexOf等公共方法.
  3. StringBuffer對AbstractStringBuilder的公共方法添加了同步鎖或者對呼叫的方法加了同步鎖,所以是執行緒安全的.
  4. StringBuilder並沒有對AbstractStringBuilder的公共方法新增同步鎖,所以是非執行緒安全的.

1.1.3 對於三者使用總結

  1. 如果操作少量的資料用String.
  2. 單執行緒操作字串緩衝區下操作大量資料用StringBuilder.
  3. 多執行緒操作字串緩衝區下操作大量資料用StringBuffer.

1.2 什麼是反射機制?反射機制的應用場景有哪些呢?

Date: 2018-10-31 22:51

Author: devinkin

Created: 2018-10-31 三 23:21

Validate