2017-12-05 7 views
1

In meiner Methode format(int n) versuche ich einfach, den übergebenen int-Wert als String zurückzugeben. Verwenden der toString() Methode.Java: Versuch, einen int-Wert in einen String zu konvertieren

public String format(int n) { 

    return n.toString(); 
} 

Aber ich erhalte den Fehler int cannot be dereferenced. Soweit ich das verstehe, passiert das, weil ich einen primitiven int-Wert behandle, als ob es ein Objekt wäre, aber ich weiß nicht, wie ich es beheben soll. Ich würde jede Hilfe mit diesem schätzen.

+2

'return" "+ n;' –

+1

primitive Typen wie 'int' sind keine Objekte und haben daher keine Methoden. Sie können 'String.valueOf (n)' verwenden. –

+0

Ich habe gerade eine Antwort geschrieben und bemerkt, dass @MuratK. schon gepostet der gleiche: D – prsvr

Antwort

9

Sie können Methoden für Primitive nicht aufrufen.

public String format(Integer n) {  
    return n.toString(); 
} 

Und auf diese Weise aufrufen: Sie könnten int durch Ersetzen

return ((Integer)n).toString(); 

Dank Autoboxing auch direkt umschreiben Ihre Methode mit Integer:
Sie könnten int zu Integer und rufen toString() auf das Feld (der Compiler wird Box int für Sie zu Integer, wie der Parameter übergeben wird):

int x = ...; 
format(x); 

Aber eine einfachere Art und Weise wird mit der String.valueOf(int) Methode:

public String format(int n) { 
    return String.valueOf(n); 
} 

In diesem Fall ist es wirklich nötig ist eine Methode, die nur die Delegierten zu String.valueOf() zu schaffen?

1

Sie könnten auch die int mit dem leeren String wie folgt verketten:

public String format(int n) { 
    return "" + n; 
} 

Unter der Haube dieses endet Aufruf String.valueOf (n) und verwendet einen String die beiden zusammen anhängen, aber die moderne Compiler Dies wird für Sie optimiert, so dass es keine Leistungseinbußen gibt.

Verwandte Themen