1. java中操作字符串有哪些类?有什么区别?
- 有String StringBuilder和StringBuffer
- String声明的是不可变对象,每次操作产生新的String对象,然后指针指向新的String对象。StringBuilder和StringBuffer在原有基础上操作对象。经常要改变对象尽量不适用String。
- StringBuilder的效率比StringBuffer高。
- StringBuffer比StringBuilder更安全,多线程建议使用StringBuffer,单线程建议使用StringBuilder。
2. String str = “zs”;和String str = new String(“zs”);一样吗?
- 不一样,内存的分配方式不一样。
- String str = "zs"的方式,JVM会将其分配到常量池中。
- String str = new String(“zs”)的方式,会被分配到堆内存中。
3. 怎么将字符串反转?
- 可以通过StringBuilder和StringBuffer中的reverse方法实现。
StringBuilder str = new StringBuilder();
str.append("asdf");
System.out.println(str.reverse());
结果:
fdsa
4. String类的常用方法有哪些?
- indexOf():返回指定字符的索引。
- charAt():返回指定索引处的字符。
- replace():字符串替换。
- trim():去除字符串两端空白。
- split():分割字符串,返回一个分割后的字符串数组。
- getBytes():返回字符串的 byte 类型数组。
- length():返回字符串长度。
- toLowerCase():将字符串转成小写字母。
- toUpperCase():将字符串转成大写字符。
- substring():截取字符串。
- equals():字符串比较。
5.抽象类一定要有抽象方法吗?
- 不需要,抽象类不是非要有抽象方法。
6. 抽象类和普通类的区别?
- 抽象类可以包含抽象方法,普通类不可以包含抽象方法。
- 抽象类不可以实例化。
7.抽象类可以被final修饰吗?
- 不可以,final修饰后就不可以被继承了,抽象类就是要被继承。
8. 接口和抽象类有什么区别?
- 实现:抽象类的子类使用extends继承,接口使用implements实现。
- 构造函数:抽象类可以有构造函数,接口没有构造函数。
- main方法:抽象类可以有main方法,接口不能有main方法。
- 实现数量:可以实现多个接口,但是只能继承一个抽象类。
- 访问修饰符:接口中的方法默认是public修饰,抽象类中的方法可以是任意·修饰。