Integer.parseInt は、キャストと同じことを行いません。
最初の例を見てみましょう。
int randomNumber=(int) (Math.random()*5)
Math.random は double を返します。double に int を掛けると、Java は結果を double と見なします。したがって、式 Math.random()*5 の型は double です。あなたがやろうとしているのは、その値を int 型の変数に代入することです。デフォルトでは、Java は int 型の変数に double 値を代入することを、明示的にコンパイラーに許可しない限り許可しません。基本的に、double を int にキャストすることは、「この int 変数がこの double 値の小数部分を保持できないことはわかっていますが、それは問題ありません。切り捨ててください」とコンパイラーに伝えることと考えることができます。
String から int への変換を見てみましょう。
int value = Integer.parseInt("5");
文字列「5」はすぐに整数に変換できません。定義により小数部分を削除することで整数に変換できる double とは異なり、文字列は簡単に、または一貫して int に変換できません。「5」、「042」、「1,000」はすべて整数表現ですが、「Hello, World!」のようなものです。ではない。このため、String を int に変換するための一次言語機能はありません。代わりに、メソッドを使用して文字列を解析し、値を返します。
したがって、すべての質問に答えるには:
値を int にする 2 つの異なる方法はなぜですか?
変換する値の型を考慮する必要があります。プリミティブを int に変換する場合はキャストを使用できます。オブジェクトを変換する場合は、その型に固有の何らかの変換メソッドを使用する必要があります。
また、検索を行ったところ、 parseInt() は文字列を引数として受け取ると言われています..これは、 parseInt() が文字列を整数に変換するためだけであることを意味しますか?
正しい。parseInt メソッドに他の型を渡すことはできません。そうしないと、コンパイラ エラーが発生します。
このキャスティングはどうですか (int) ?? これを使用して文字列を int に変換することもできますか?
いいえ、int へのキャストはプリミティブ値に対してのみ機能し、Java では String はプリミティブではありません。