Warum kann ein StringBuilder-Objekt nicht mit einem String initialisiert werden?

7
%Vor%

In Java ist diese Aussage offensichtlich falsch. IDEs wie Eclipse sagen dir das:

  

kann nicht von String in StringBuilder

konvertiert werden

Allerdings könnte ein String -Objekt von = operator initialisiert werden.

Ich möchte einige Gründe kennen, die mit der Speicherzuweisung zusammenhängen.

    
chain ro 16.01.2014, 10:52
quelle

6 Antworten

10

Denn StringBuilder ist ein Objekt und muss es konstruiert sein. Sie erhalten den Fehler, weil String nicht a StringBuilder ist.

String ist ein spezieller String, der zwischen primitiv und class 1 liegt. Sie können ein Zeichenfolgenliteral direkt einer String-Variablen zuweisen, anstatt den Konstruktor aufzurufen, um eine String-Instanz zu erstellen.

1 interessantes Thema :

  

Die Designer von Java entschieden, primitive Typen in einem zu behalten   objektorientierte Sprache, anstatt alles zu einem Objekt zu machen   um die Leistung der Sprache zu verbessern. Primitive werden gespeichert   im Call-Stack, die weniger Speicherplatz benötigen und billiger sind   manipulieren. Auf der anderen Seite werden Objekte im Programm gespeichert   Heap, die eine komplexe Speicherverwaltung und mehr Speicherplatz benötigen.

     

Aus Performancegründen ist der Java-String so konzipiert, dass er zwischen a   Primitiv und eine Klasse.

Mehr lesen:

Maroun 16.01.2014, 10:54
quelle
10

"xxx" ist definiert als ein String-Literal durch die Angabe der Sprache * und ist ein String-Objekt. So können Sie schreiben:

%Vor%

Aber ein String ist kein StringBuilder ...

* Zitat aus der JLS: "Ein String-Literal hat immer den Typ String "

    
assylias 16.01.2014 10:55
quelle
1

StringBuilder ist ein Objekt, das kein Wrapper ist.

>     
Developer SuRu 16.01.2014 10:55
quelle
1

Das funktioniert

%Vor%

, weil Sie einen Verweis auf ein String-Literal haben, das einer Variablenreferenz zugewiesen ist. d.h. die Typen sind gleich.

Sie können dies nicht implizit Typen konvertieren oder ein Objekt mit Zuweisung in Java ändern.

%Vor%

Funktioniert, weil der String ein Objekt ist.

    
Peter Lawrey 16.01.2014 10:55
quelle
0

String ist nicht nur eine Klasse, sondern alles innerhalb von "" ist ein JVM-String und ein String-Objekt verweist auf diesen String.
So funktioniert String str="hello" .

Aber StringBuilder und andere Tausende von Objekten sind nicht so speziell wie String , also werden sie auch nicht initialisiert.

    
Sachin Verma 16.01.2014 10:56
quelle
0

In Java ist der String ein spezieller Typ von Klasse Sie können ein Objekt für String wie

definieren %Vor%

oder

%Vor%

Aber StringBuilde ** r ist genau wie eine ** normale Klasse und wenn Sie ein Objekt dafür erstellen müssen, sollten Sie das new Schlüsselwort verwenden (Konstruieren Sie das Objekt) . HTH

    
iamyogish 16.01.2014 10:58
quelle

Tags und Links