2017-11-22 17 views
3

オブジェクト著者は言うオブジェクト:使用のparseIntは、私はラッパーを作成したJava 9ファンダメンタルズとの関係で始まり本を読んでい

「すべてのラッパークラスは不変です。彼らは のオブジェクトを作成する3つの方法を提供します:

1 - コンストラクタの使用。

2 - valueOf()ファクトリメソッドを使用する。

3 - parseXxx()メソッドを使用します(はラッパークラスの名前です)。 Characterクラスでは使用できません。

私は明らかにしていますが、3番目は完全に理解していません。 しかしAPIは、Integer.parseXxxがプリミティブを返すと言っています。 意味がありますか?

+1

からintプリミティブ取得するには、Javaプログラムでは、以下のように使用することができ、これらのドキュメントは、混乱のいくつかの解消に役立つことがあります。 ます。https: //docs.oracle.com/javase/tutorial/java/data/numberclasses.html https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html –

答えて

2

はい、静的メソッドInteger.parseInt(String)は、指定された文字列をプリミティブ整数に解析しようとします。そうしないと、例外がスローされます。

基本的に、それを包む必要はありません。それは、成功するか、投げても「知らせる」ことが保証されているからです。

+0

Integer.parseInt(... )例えば、それ自体はどんなオブジェクトも作成しません、そうですか? –

+1

Integer(ボックスプリミティブ)のインスタンスは作成されません。 – Paedolos

2

parseXxxを使用してラッパーオブジェクトを作成する方法は、ターゲットタイプを実際にラッパータイプにすることだけです。すなわち:まだ

Integer number = Integer.parseInt("123"); 

parseIntは本当にラッパーオブジェクトを作成するのではなく、むしろparseIntが返す値はは、それに対応するラッパー型にをautoboxedされています。

+0

感謝しています。それはテキストが少し混乱しているのですか? –

+1

@silviaDominguezが合意した、言葉遣いは間違いなく改良することができました。 –

1

Integerクラスのsource codeを見てみると、Integer.parseIntリターンがプリミティブなintいることを確認します。以下は、メソッドシグニチャの方法です。

​​

apiは基本的に文字列の引数を符号付き10進整数として解析します。文字列の文字はすべてapiが動作するためには10進数でなければなりません。

そして、以下の回答に加えてString

int newInt = Integer.parseInt("99"); 
関連する問題