为什么我们不能将字符串转换为stringbuffer?

时间:2015-01-09 05:49:26

标签: java

这背后的原因是什么:

为什么不允许StringBuffer sb=(String)"Java";

允许StringBuffer sb=new StringBuffer("Java");

4 个答案:

答案 0 :(得分:6)

String是仅从Object 派生的不可变。因此,您无法将其强制转换为其他类型

要从StringBuffer获取String,您必须创建一个新的StringBuffer实例,并将String作为constructor的参数,如前所述。

答案 1 :(得分:5)

Java是一种强类型语言。

这意味着一切都有类型。例如,Strings和Stringbuffers。

演员有两个主要目的。第一个是基元,它们都是数字(布尔除外)。这是转换。第二个是对象。唯一的目的是将一个对象强制转换为其子类之一。例如。

Object s = "";
int len = ((String) s).length();

尽管StringBuffer和String可能具有相似的目的,但它们是不相关的

答案 2 :(得分:1)

Java不支持将String转换为StringBuffer,因为String是一个不可变对象。

StringBuilder的Java API通知我们有一个构造函数可用于从String对象创建StringBuffer:

StringBuffer(String str)

答案 3 :(得分:0)

在java对象类型转换中,可以将一个对象引用类型转换为另一个对象引用。强制转换可以是其自己的类类型,也可以是其子类或超类层次结构中的一个类。 您可以查看下面的代码片段,以了解类型转换的工作原理。在下面的代码中,B类是A类的子类(子)。

class A{
}

class B extends A{
}

A a = new A();  
B b = new B();  

A a1 = (A)b;    //this is correct
B b1 = (B)b;    //this is correct

A a2 = (B)a;    //ClassCastException
B b2 = (A)a;    //Compile error

您可能需要查看其中的一些内容 - Conversions and PromotionsJava Cast and Conversions,以便更好地了解Java类型转换和升级。