2017-12-05 56 views
1

私のメソッドでformat(int n)私は単に渡されたint値を文字列として返そうとしています。方法はtoString()です。Java:int値を文字列に変換しようとしています

public String format(int n) { 

    return n.toString(); 
} 

しかし、私はエラーint cannot be dereferencedを得続けます。私が理解していることから、これは、オブジェクトであるかのようにプリミティブなint値を扱っているので起こりますが、それを修正する方法はわかりません。私はこれに助けていただければ幸いです。

+2

'return" "+ n;' –

+1

'int'のようなプリミティブ型はオブジェクトではないのでメソッドはありません。 'String.valueOf(n)'を使うことができます。 –

+0

私はちょうど答えを掲示し、@ MuratKに気づいた。既に同じものを投稿しました:D – prsvr

答えて

9

プリミティブでメソッドを呼び出すことはできません。
あなたがIntegerintをボックスとその上toString()を呼び出すことができます:あなたも直接Integerintを交換することにより、あなたの方法を書き換えることができオートボクシングへ

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

ありがとう:

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

そして、この方法でそれを起動します(コンパイラは、パラメータとしてIntegerintを入力します)。

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

しかし、もっと簡単な方法がString.valueOf(int)方法使用されます。この場合

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

は、それが本当に方法String.valueOf()に委譲を作成するために必要ですか?

1

ます。また、このような空の文字列をint型を連結できます。

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

これはアップString.valueOf(n)を呼び出して終了ボンネットの下と一緒に2を追加するのStringBuilderを使用していますが、最近のコンパイラそれを最適化してパフォーマンスのトレードオフではありません。

関連する問題