它们的区别是,String被final修饰,底层是一个final修饰的char数组,是不可变的对象,每次操作必然产生一个新的对象。StringBuffer 和 StringBuilder 不同,它们俩能够被多次修改,并且不产生新的对象。StringBuilder 是 Java 1.5 时新增的,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的,不能同步访问。而StringBuffer给方法加上了同步锁,所以它保证了线程安全
如果==两边的是基本类型,那么比较的就是他们的值,如果是引用类型,则比较的是他们的地址值
equals方法是Object类的方法,所有类都继承Object,所以所有类都有equals方法,在没有重写equals()方法的类中,调用equals()方法
其实和使用==的效果一样,也是比较的是引用类型的变量所指向的对象的地址,我们可以对equals方法进行重写来比较他们的值。