2013-04-09 9 views

Antwort

6

(Zeichenfolge) Wert wandelt Objektwert in Zeichenfolge um, die String erweitert. value.toString() ruft method on object value auf, das von der Klasse Object geerbt wird und diese Methode return String, die Informationen dieses Objekts anzeigt. Wenn Sie einen Wert von yourClass haben, wird empfohlen toString() zu überschreiben.

new Long (Wert) erstellt ein neues Objekt vom Typ Long und legt den Wert von Long auf Ihren Variablenwert fest. (Long) value hole den Objektwert und wirf ihn auf das Objekt vom Typ Long. in Long (Wert) Wert muss Nummer oder String sein.

+0

Können Sie Long verlängern? Ich dachte, es wäre eine versiegelte Klasse in Java. – Patashu

+0

Was ist ** Wert zu Wert **? – Gunaseelan

+0

ah es ist, ich habe vergessen .. setzt Wert von Long auf Wert - Ihre Variable: D –

3

In

new Long(value) 

schafft neue Wrapper-Klasse Object

und

(Long)value 

Typumwandlung Wert Long (zu Wrapper), wenn möglich.

ähnlich

String(value) 

Typumwandlung Wert zu String

aber toString() ist ein Verfahren, das eine Objektklassenmethode ist, und man muß es nach Bedarf zu überschreiben, zB.

class User 
{ 
String name; 
int age; 

public String toString() 
{ 
return "name :"+name+" \n age :"+age; 
} 
} 
0

Zunächst ist Wert eine Zeichenfolge selbst? Der Wert (String) ist eine Umwandlung und funktioniert nur, wenn Wert eine Zeichenfolge ist. Aufruf von value.toString() ist jedoch nur ein Methodenaufruf. toString() ist eine Methode von jedem Objekt in Java, so dass nicht fehlschlägt, auch wenn Wert ist, sagen wir, eine ganze Zahl.

Jetzt versucht Calling (Long) -Wert, Wert in Long zu konvertieren, und funktioniert nur , wenn Wert vom Typ Long ist. und Aufruf von Long (Wert) ruft tatsächlich den Konstruktor der Klasse Long auf, übergibt Wert als Parameter.

-1

String Klasse implementiert CharSequence und auch es erstreckt sich von Object Klasse. Also, wenn jemand eine andere Art von CharSequence verwenden, haben wir wie die erste Version typisieren (String)value
[(String)value wenn es String Objekt und (StringBuffer)value für Stringobjekttyp enthält]
Über toString() wir toString() Methode in unserer Klasse außer Kraft zu setzen haben, die zeigt unsere Objektdarstellung im String-Format gemäß unserer Anforderung.Wenn wir nicht dann Standardimplementierung von toString() außer Kraft setzen von Object Klasse vererbt werden und geben den String in hexadezimale Darstellung des Hash-Code unseres Objektes wie [email protected]

Andere Implementierung von CharSequence sind CharBuffer, String, String

1>(String) Wert bedeutet value enthält String-Objekt. Wenn es String nicht enthält, wird das ClassCastException zur Laufzeit geworfen. Typecasting wird eine Ausnahme für die Kompilierungszeit auslösen, wenn Sie mit irrelevanter Typhierarchie typisieren. wie unten angegeben

Exception e = new Exception(); 
String str = (String)e; 

2> Aufrufen toString() bedeutetanyobject nicht notwendig ist, ein String Objekt zu sein. Korrektes Überschreiben toString() Methode in unserer eigenen Klasse wird für die String-Darstellung unserer eigenen Klasse hilfreich sein und es wird auch nie werfen keine Ausnahme existiert in der Java-Welt, weil es toString() von Objektklasse erbt. Also, wenn die Überschreibung toString und Sie System.out.println(userObject); drucken, dann wird es hexadezimale Darstellung des Hash-Code unseres Objektes zeigt nicht wie [email protected]

public class UserObject { 
    String name; 
    int age; 
    @Override 
    public String toString() { 
     return " Name="+name+" \n age="+age; 
    } 

    public static void main(String[] args) { 
     UserObject uo = new UserObject(); 
     uo.name="AAA"; 
     uo.age=18; 
     System.out.println(uo); //output will be "Name=AAA age=18" instead of "[email protected]" 

    } 
} 

über neue Long (Wert) und (Long) Wert.

new Long(value) bedeutet, Sie haben Wert als long/String Sie möchten es in Wrapper-Klasse Objekt konvertieren. So können Sie Long (lang), Long (String) constructor gemäß der Bedingung verwenden.

Lange Typumwandlung Erklärung ist ähnlich wie oben String typecasting oder eine beliebige Typumwandlung. (Long)value bedeutet, wenn Sie den Code wie folgt erhalten, dann können Sie auch auf Long, Integer, Double tippen und hängt von dem zugewiesenen Wert auf der rechten Seite des Gleichheitszeichens ab.

Number i=10L; //java.lang.Number 
Long a= (Long)i; 
+0

Sie sagten: "Wenn jemand eine andere Art von' CharSequence' verwendet, müssen wir "tippen", aber seien Sie vorsichtig. Sie können zum Beispiel keinen 'StringBuilder' in einen' String' umwandeln, genauso wie Sie nicht 'Integer' in einen' Long' transformieren können. –

+0

Das geht nicht. In "Number i = 10" ist 10 ein "int" und wird in "Integer" gerahmt. 'Integer' kann nicht in' Long' umgewandelt werden. Der Compiler wird nicht auspacken, nur um es auf "Long" zu reboxen. Ziehen Sie 'Long.valueOf (long)' auch vor, um einen Konstruktor selbst aufzurufen. –

+0

Sehr verwirrte Antwort und mehrere Fehler. CharSequence ist völlig irrelevant. Sie müssen toString() nicht überschreiben. Die Existenz einer Typumwandlung impliziert nicht, dass das Objekt vom richtigen Typ ist. -1 – EJP

-1

Das sind alle sehr unterschiedlich. Der erste ist Type Casting. Nehmen wir an, Sie erhalten ein Objekt für Ihre Methode, und Sie wissen, dass es sich um einen String handelt, also möchten Sie, dass er als dieser Typ bezeichnet wird. so dass Sie das tun

public void method(Object obj){ 
    String str = (String) obj; 
} 

Die toString Methode ist eine von Object Klasse geerbt, die eine String Darstellung eines beliebigen Object Ihnen zurückgibt.

Also der Unterschied ist, wenn Sie das Gießen, Ihr Objekt muss bereits ein String sein, gibt es keine tatsächliche Umwandlung. Der Unterschied besteht darin, dass Sie einen spezifischeren Typ für Ihre Variable verwenden können, aber wenn Sie toString aufrufen, das nicht notwendig ist.

Das Aufrufen von toString kann Ihnen ein anderes Objekt als das Original geben, es sei denn, Ihre Klasse ist bereits String, in diesem Fall wird die gleiche Referenz zurückgegeben.

+0

Der Aufruf von 'toString()' erzeugt nicht notwendigerweise ein neues Objekt, obwohl es kaum von Bedeutung ist. Nach 'String s = ...; String t = s.toString(); 's und t sollten das gleiche Objekt sein. –

+0

Ja, ich verstehe deinen Standpunkt. Sie überlegen sich den String-Pool. Was ich damit meinte, ist, dass die Rückgabe der Methode nicht genau dasselbe Objekt ist, wie es beim Typisieren der Fall ist. Ich werde versuchen, die Antwort zu bearbeiten, um es klarer zu machen –

+0

Strings sind unveränderlich, also gibt es keinen Grund für die 'toString' Methode, einen zu kopieren. Ich bin mir ziemlich sicher, dass die Implementierung von String 'public String toString() {return this; } '. –

-1

Wenn Sie "(String) Wert" tun, ist es ein Casting, mit anderen Worten, Sie sagen explizit für Compiler, dass Wert eine Zeichenfolge ist, aber wenn nicht, wird eine Laufzeitausnahme ausgelöst.

wenn Sie das tun „value.ToString()“ wird eine neue Zeichenfolge mit dem dieser Wert

das gleiche gilt in keiner Sprache für Long

+0

Tun String.toString() wirklich neue Zeichenfolge erstellen? – Jayamohan

+0

Ja, String ist unveränderlich –

+0

Ja. Strings sind unveränderlich. Haben Sie überprüft, was die String.toString() -Methode macht? Erstellt es eine NEUE Zeichenfolge? – Jayamohan

2

schaffen sein (die ich kenne) wird ein Guss Änderung der Typ eines Objekts.

Sie verwenden die Besetzung (String), wenn Sie sagen, eine Referenz, die der Compiler denkt, ist ein Objekt, aber Sie wissen, ist wirklich ein String, und Sie möchten, dass der Compiler das wissen. Wenn Sie eine Ganzzahl haben und versuchen, in String zu konvertieren, erhalten Sie beim Ausführen des Codes eine ClassCastException.

Wenn Sie also eine Ganzzahl haben und ihre String-Repräsentation wollen, würden Sie toString verwenden.

(Beachten Sie, dass ein Cast den Typ eines "Skalars" ändert. Dh, Sie können von Int in Char mit (char) umwandeln und der Compiler wird die entsprechende Konvertierung durchführen. Die "Besetzung" ist in diesem Fall ein ganz anderer Es ist bedauerlich, dass die Tradition die gleiche Syntax für beide verwendet hat.)

0

Wenn Sie ein Objekt in String umwandeln, sind Sie sicher, dass es eine Zeichenfolge und zur Laufzeit ist, wenn es eine Instanz von ist ein anderes Objekt, dann erhalten Sie eine Klasse Cast Ausnahme.

Auf der anderen Seite, wenn Sie eine toString() - Methode für ein Objekt aufrufen, muss es keine Zeichenfolge sein, da alle Klassen diese Methode von Klassenobjekt erben.

Verwandte Themen