0

これらのラッパークラスのメソッドに関連するいくつかの質問があります。

まず、メソッドLong(またはInteger)がvalueOfメソッドのパラメーターとして文字列を受け取るのはなぜですか?代わりに、toStringメソッドで数値プリミティブを取りますか?(以下の例を参照)

次に、以下にリストされているコードの2行目が(最初の引数として文字列を使用して)機能しないのに対し、最初の行は(最初の引数としてlong(またはint)を使用して)正常に機能するのはなぜですか。

どちらのメソッドも、2番目の引数(この場合は8)で指定された基数に変換された最初の引数で記述された値の値をそれぞれString型とLong型で返す必要があります。

String s = Long.toString(80,8)// takes a numeric primitive and it works fine.

Long l = Long.valueOf("80",8)// takes a string as first argument it does not compile,
                              //(as it was because in radix 8 cannot "read" the number 8
                              // and therefore it prompts an NumberFormatException.
4

4 に答える 4

4

同じことを行う複数のメソッドを持つことは意味がないことを考えると、論理的であり、異なるメソッドが異なる引数で異なることを行うことはまったく驚くべきことではありません。

まず、メソッドLong(またはInteger)がvalueOfメソッドのパラメーターとして文字列を受け取るのはなぜですか?

したがって、文字列を解析して、LongまたはIntegerをドキュメントの状態として提供できます。

代わりに、toStringメソッドで数値プリミティブを取りますか?

valueOfは文字列をオブジェクトに変換し、toStringは値を取得してそれを文字列に変換します。これらがほぼ反対のことをすることを考えると、あなたはそれらが逆であると期待するでしょう。

次に、以下にリストされているコードの最初の行が(最初の引数として文字列を使用して)機能しないのに対し、2番目の行が(最初の引数としてlong(またはint)を使用して)正常に機能するのはなぜですか。

808進数に変換できる有効な10進数です。 80は有効な8進数(または2進数)ではないため、8進数として解析することはできません。

于 2013-02-04T15:20:34.363 に答える
3
  1. これらのメソッドは、それぞれ表現から、および表現に変換しStringます。あなたは何を期待しますか?

  2. Stringコードの最初の行は、引数を取らないメソッドを呼び出します。に変換されるのにString、なぜそれが入力されるのでしょうか。それは出力です

「80」は有効な8進数ではありません。8は8進数の数字ではありません。値8は「10」です。

于 2013-02-04T15:21:15.157 に答える
1

実際には両方のメソッドがバインドされています:

/** 
 * Returns the string representation of the <code>long</code> argument. 
 * <p> 
 * The representation is exactly the one returned by the 
 * <code>Long.toString</code> method of one argument. 
 * 
 * @param   l   a <code>long</code>. 
 * @return  a string representation of the <code>long</code> argument. 
 * @see     java.lang.Long#toString(long) 
 */ 
public static String valueOf(long l) { 
    return Long.toString(l, 10); 
}

Long.toString()最初の引数としては時間がかかるようです。上記のコードを参照してください。

于 2013-02-04T15:23:16.307 に答える
1

Long.valueOf(String, int)文字列をに変換しLongます。

Long.toString(long. int)aを文字列に変換しlongます。

どちらの関数も、変換に使用される基数を取ります。

Long.toString(long, int)およびのJavaDocを確認することをお勧めしますLong.valueof(String, int)。ドキュメントは素晴らしく、それを非常によく説明しています。

于 2013-02-04T15:35:43.450 に答える