String、StringBuffer、StringBuilder 三者之间的区别?
- String 字符串常量
- StringBuffer 字符串变量(线程安全)
- StringBuilder 字符串变量(非线程安全)
String 中的 String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[]
String 对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了
一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。
总结:
- 如果要操作少量的数据用 String
- 多线程操作字符串缓冲区下操作大量数据用 StringBuffer
- 单线程操作字符串缓冲区下操作大量数据用 StringBuilder
String 常用的方法有什么?
- indexOf():返回指定字符的索引
- charAt():返回指定索引处的字符
- replace():字符串替换
- trim():去除字符串两端空白
- split():分割字符串,返回一个分割后的字符串数组
- getBytes():返回字符串的 byte 类型数组
- length():返回字符串长度
- toLowerCase():将字符串转成小写字母
- toUpperCase():将字符串转成大写字符
- substring():截取字符串
- equals():字符串比较
接口和抽象类的区别?
- 实现:抽象类的子类使用 extends 来继承,接口必须使用 implements 来实现接口。
- 构造函数:抽象类可以有构造函数,接口不能有。
- main 方法:抽象类可以有 main 方法,并且我们能运行它,接口不能有 main 方法。
- 实现数量:类可以实现很多个接口,但是只能继承一个抽象类。
- 访问修饰符:接口中的方法默认使用 public 修饰,抽象类中的方法可以是任意访问修饰符