Java面试题总结-Day2

Java面试题总结-Day2

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

猜你喜欢

转载自www.cnblogs.com/devinkin/p/9886567.html