public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append("Hello ").append("Would!!");
buf.replace(6, 11, "LiXinghua");
String str=buf.delete(6, 15).toString();
System.out.print("删除之后的内容 "+str);
}}
String str=buf.delete(6, 15).toString();
为什么要加.toString();
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append("Hello ").append("Would!!");
buf.replace(6, 11, "LiXinghua");
String str=buf.delete(6, 15).toString();
System.out.print("删除之后的内容 "+str);
}}
String str=buf.delete(6, 15).toString();
为什么要加.toString();
“.toString()”方法后就将StringBuffer类型转化为了String类型了。
为什么要转化,是因为你的变量str你规定的类型是String类型的。
String str=buf.delete(6, 15).toString();
但是你这句话,等号左边是String 类型,你可以通过查帮助文档发现,buf.delete(6, 15)后,依然是Stringbuffer类型,不同类型的对象之间是不能划等号的,而toString()方法的作用就是将任何其他类型的对象转换成String类型的对象(很多对象类型都会打印出哈希码)
这个buf是一个 StringBuffer 类型的变量String str=buf.delete(6, 15).toString();
这里的 str 是一个 String 类型的变量这一点楼上几位菜鸟这里倒是没有说错
然而, buf.delete(6, 15).toString() 却不是进行类型转换,而是通过调用方法得到一个新的对象。首先通过调用 buf.delete(6, 15),它会返回 StringBuffer 本身,也就是一个 StringBuffer 对象
然后再调用返回的这个 StringBuffer 对象的 toString() 方法,它会返回一个 String 对象,最后赋值给 str 变量。这些操作中,没有进行任何类型转换的操作。
并且,StringBuffer 是从 Object 继承,它是不允许被转换成 String 类型的
同意这个,是通过StringBuffer 的toString()方法返回String对象,而不是类型转换