2013-04-09 17 views

risposta

6

(String) valore esegue il valore dell'oggetto su stringa, che deve estendere String. value.toString() chiama il metodo sul valore dell'oggetto, che è ereditato dalla classe Object e questo metodo restituisce String, che mostra le informazioni di questo oggetto. Se si ha un valore yourClass, si consiglia di sovrascrivere toString()

new Long (valore) crea un nuovo oggetto di tipo Long e imposta il valore Long al valore della variabile. Il valore (lungo) ottiene il valore dell'oggetto e lo gira sull'oggetto di tipo Lungo. in Long (value) value deve essere numero o stringa.

+0

Puoi allungare Long? Pensavo che fosse una lezione sigillata in Java. – Patashu

+0

che cos'è ** valore in valore **? – Gunaseelan

+0

ah è, ho dimenticato .. imposta il valore Long to value - la tua variabile: D –

3

In

new Long(value) 

crea nuova classe wrapper Object

e

(Long)value 

tipo di valore getto a Long (a involucro), se possibile.

simile

String(value) 

valore tipo colato al al String

ma toString() è un metodo che è un metodo di classe oggetto e bisogna sostituirla secondo necessità, ad es.

class User 
{ 
String name; 
int age; 

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

Prima di tutto, il valore è una stringa stessa? il valore (String) è un cast e funziona solo se value è una stringa. Tuttavia, chiamare value.toString() è solo una chiamata al metodo. toString() è un metodo di ogni oggetto in java, quindi non fallirà anche se il valore è, diciamo, un numero intero.

Ora, il valore Calling (Long) sta tentando di trasmettere il valore a Long e funzionerà solo se il valore è di tipo Long. e, chiamando Long (valore) in realtà chiama il costruttore della classe Long, passando il valore come parametro.

-1

String strumenti di classe CharSequence e inoltre si estende dalla classe Object. Quindi, se qualcuno sta usando un altro tipo di CharSequence dobbiamo typecast come la vostra prima versione (String)value
[(String)value se contiene String oggetto e (StringBuffer)value per StringBuffer tipo di oggetto]
Chi toString() dobbiamo ignorare toString() metodo nella nostra classe, che mostrerà la nostra rappresentazione dell'oggetto in formato String secondo il nostro requisito.Se non l'override quindi di default attuazione toString() da Object classe sarà ereditato e daremo la stringa in rappresentazione esadecimale del codice hash del nostro oggetto come [email protected]

altre applicazioni di CharSequence sono CharBuffer, StringBuffer, StringBuilder

1>(stringa) valore significa value contiene oggetto String. Se non contiene String il ClassCastException verrà lanciato in fase di runtime. Typecasting genererà un'eccezione in fase di compilazione se si esegue il typecast con una gerarchia di tipo irrilevante. come indicato di seguito

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

2> Richiamo toString() significa anyobject non è necessario essere un oggetto String. Il corretto metodo di sovrascrittura toString() nella nostra classe sarà utile per la rappresentazione String della nostra classe e inoltre sarà mai generare alcuna eccezione esistente nel mondo java perché eredita toString() dalla classe di oggetti. Così, se l'Override toString e si stampa System.out.println(userObject); allora non mostrerà rappresentazione esadecimale del codice hash del nostro oggetto come [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]" 

    } 
} 

A proposito di nuovo lungo (valore) e del valore (Long).

new Long(value) significa che il valore è long/String e si desidera convertirlo in oggetto wrapper classe Long. Quindi puoi usare Long (long), Long (String) constructor come da condizioni.

La spiegazione del typecasting lungo è simile a quella del typecasting di stringa o di un typecasting. (Long)value significa che quando si ottiene il codice come di seguito, è possibile digitare a lungo, intero, doppio e dipende dal valore assegnato sul lato destro del simbolo di uguale.

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

Hai detto "se qualcuno usa un altro tipo di' CharSequence' dobbiamo digitare ", ma attenzione. Ad esempio, non puoi lanciare un 'StringBuilder' ad un' String', nello stesso modo in cui non puoi lanciare un 'Integer' a' Long' –

+0

Che non funzionerà. In 'Number i = 10', 10 è un' int' e viene inserito in 'Integer'. 'Integer' non può essere lanciato su' Long'. Il compilatore non uscirà da unbox solo per reinserirlo in 'Long'. Inoltre, preferisci 'Long.valueOf (long)' per chiamare tu stesso un costruttore. –

+0

Risposta molto confusa e diversi errori definitivi. CharSequence è completamente irrilevante. Non è necessario sovrascrivere toString(). L'esistenza di un typecast non implica che l'oggetto sia del tipo corretto. -1 – EJP

-1

Questi sono tutti molto diversi. Il primo è Type Casting. Diciamo che tu ricevi un oggetto sul tuo metodo e sai che è una stringa, quindi vuoi che sia riferito a quel tipo. in modo da fare che

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

Il metodo toString è uno ereditato dalla Object di classe, che restituisce a voi un String rappresentazione di un dato Object.

Quindi la differenza è che quando si esegue il casting, l'oggetto deve già essere un String, non c'è alcuna conversione effettiva. La differenza è che puoi usare un tipo più specifico per la tua variabile, ma quando invochi toString non è necessario.

L'invio di toString può fornire un oggetto diverso da quello originale, a meno che la classe sia già una String, in tal caso viene restituito lo stesso riferimento.

+0

Chiamare 'toString()' non crea necessariamente un nuovo oggetto, anche se non ha importanza. Dopo 'String s = ...; Stringa t = s.toString(); 's e t dovrebbero essere lo stesso oggetto. –

+0

Sì, vedo il tuo punto. Stai considerando il pool di stringhe. Quello che intendevo è che il ritorno del metodo non è esattamente lo stesso oggetto, come nel typecasting. Proverò a modificare la risposta per renderla più chiara. –

+0

Le stringhe sono immutabili, quindi non c'è motivo per il metodo 'toString' per copiarne una. Sono abbastanza sicuro che l'implementazione di String sia 'public String toString() {return this; } '. –

-1

quando si esegue "(String) value" è un casting, in altre parole, si sta esplicitamente "dicendo" per il compilatore che il valore è una stringa, ma in caso contrario, verrà generata un'eccezione di runtime.

quando lo fai "value.ToString()" sarà creare una nuova stringa con il valore di questo

lo stesso vale per lungo

+0

Do String.toString() crea davvero una nuova stringa? – Jayamohan

+0

sì, la stringa è immutabile –

+0

Sì. Le stringhe sono immutabili. Hai controllato il metodo String.toString(). Sta creando una nuova stringa. – Jayamohan

2

In nessuna lingua (che io sappia) sarà un cambiamento di fuso il tipo di un oggetto.

Si utilizza il cast (String) quando si ha, per esempio, un riferimento che il compilatore pensa sia un Oggetto, ma si sa che è davvero una stringa e si desidera che il compilatore lo sappia. Se hai un intero e provi a trasmettere su String, otterrai un ClassCastException quando esegui il codice.

Quindi se si dispone di un numero intero e si desidera la sua rappresentazione di stringa si utilizzerà toString.

(Si noti che un cast cambierà il tipo di "scalare". Vale a dire, si può lanciare da int a char con (char) e il compilatore eseguirà la conversione appropriata. Il "cast" in questo caso è un tipo completamente diverso concetto: è una sfortuna che la tradizione abbia portato la stessa sintassi ad essere utilizzata per entrambi)

0

Quando si esegue il cast di un oggetto su String, si è sicuri che si tratta di una stringa e in fase di esecuzione se si tratta di un'istanza di un altro oggetto quindi ottieni un'eccezione di classe cast.

D'altra parte, quando si chiama un metodo toString() su un oggetto non è necessario essere una stringa poiché tutte le classi ereditano tale metodo dall'oggetto classe.

Problemi correlati