这背后的原因是什么:
为什么不允许StringBuffer sb=(String)"Java";
允许StringBuffer sb=new StringBuffer("Java");
答案 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 Promotions和Java Cast and Conversions,以便更好地了解Java类型转换和升级。