String/StringBuffer/StringBuilder
String 长度大小不可变
StringBuffer 和 StringBuilder 长度可变
StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象
拥有String的几乎所有方法,用于需要频繁修改的字符串
StringBuilder 类在 Java 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
String转StringBuffer:
String str = "asd";
StringBuffer stb = new StringBuffer(str);
StringBuffer转String:
StringBuffer stb = new StringBuffer("abc");
String str = stb toString();
StringBuilder追加/添加/删除/字符
StringBuilder sb = new StringBuilder( 0);
sb append("Runoob ");
sb append("!");
sb insert( 5, "Java");
sb delete(0 , 5);
多态
抽象类
抽象类不能创建对象但是有构造方法为什么?
原因:抽象类就是用来当父类的所以保留构造方法,因为子类在创建对象时会去调用父类的构造方法
抽象类和普通类的相同点和不同点
相同点:
都可以定义属性(成员变量)
都可以定义带方法体的方法
不同点:
抽象方法只能写在抽象类里,普通类不能写
抽象类可以写普通方法
多态的本质
调用看引用,执行看对象
多态常用的 种应用方式
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态
接口
接口不能实例化,所以不能直接调用接口中的常量,需要通过接口的实现类来调用
接口中的成员属性
在Java中,接口中的成员属性默认是public static final的,也就是说,它们是常量。必须显示初始化。不能被修改。
修饰符只能是public,必须显式赋值,静态的,都是常量
接口中的成员方法
成员方法,都是抽象发方法,没有方法体。除了default修饰的,可以不强制实现
默认都是public abstract
static修饰的方法直接在实现类中的main方法中通过类名 方法名调用
接口的特点
普通类可以同时实现多个接口,
接口可以继承接口,不能实现接口,接口可以有静态方法和默认方法。
接口不能实例化,只能被实现。