這背後的原因:爲什麼我們不能將字符串轉換爲stringbuffer?
爲什麼這是不允許的StringBuffer sb=(String)"Java";
,這是允許StringBuffer sb=new StringBuffer("Java");
這背後的原因:爲什麼我們不能將字符串轉換爲stringbuffer?
爲什麼這是不允許的StringBuffer sb=(String)"Java";
,這是允許StringBuffer sb=new StringBuffer("Java");
字符串是不可變的類僅從Object的。因此,你不能將它轉換爲另一種類型的
爲了得到一個StringBuffer
從String
您必須創建一個新的StringBuffer
實例與字符串作爲參數傳遞給你剛纔提到的constructor
。
@TheLostMind yes按照您的評論更正 –
Java是一種強類型語言。
這意味着,一切都有一個類型。例如,字符串和字符串緩衝區。
演員有兩個主要目的。第一個是基元,它們都是數字(布爾除外)。這是一個轉換。第二個是對象。唯一的目的是將一個對象投射到它的一個子類。例如。
Object s = "";
int len = ((String) s).length();
的StringBuffer和字符串無關heigherarchically即使他們可能具有類似用途
Java不支持字符串的鑄件的StringBuffer,因爲字符串是不可變對象。
爲StringBuilder Java API的告訴我們有可從一個String對象創建一個StringBuffer構造函數:
StringBuffer(String str)
此外,String不能轉換爲StringBuffer,因爲它們不以任何方式與heigherarchically相關。 (除了從Object下降) –
在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類型轉換和提升的。
相同的原因'String s =(Integer)5;'不允許 – immibis