Java面试题总结-Day2
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
Author: devinkin
Created: 2018-10-31 三 23:21
Validate