CodeGym /コース /JAVA 25 SELF /データ型間の変換

データ型間の変換

JAVA 25 SELF
レベル 2 , レッスン 3
使用可能

1. なぜ型の変換が必要なのか?

Java は厳密に型付けされた言語です。もしコンピューターに数値用の「箱」があるのに、そこへテキストを押し込もうとしたら——それはちょうど USB ポートにフォークを差し込もうとするようなものです。コンパイラはそんなことを許してくれません! 😡

しかし現実には、異なるデータ型を同時に扱うことがよくあります。たとえば、数値を含む文字列を持っている場合です。そこで必要になるのが型の変換(あるいは型のキャスト)です。

例を見てみましょう。たとえば、ユーザー数を保持したいとします:

int a = 1;
int b = "2";
int c = "三";

コンパイラはすぐにこう言います: 「私を何だと思っているの? 文字列を数値に自動変換なんてできません。あなたが明示的に変換してください」。

Java にはいくつかの変換方法があり、それぞれに長所・短所やありがちな落とし穴があります。

2. intString に変換する

業務では、数値の文字列表現が必要になる場面がよくあります。たとえば、画面に表示したり、ファイルへ保存したり、ネットワークで送ったり、テキストと結合したりするときです。Java にはそのための方法が複数あり、状況に応じて使い分けられます。

String.valueOf() メソッド

これは基本かつ最も一般的な方法です:

int number = 42;
String str = String.valueOf(number);  // str == "42"

String.valueOf() は、渡されたオブジェクトの型に応じた文字列表現に変換します。

空文字列との連結

昔からあるが有効な方法です:

int number = 42;
String str = "" + number;

単純なケースでは手早く書けますが、コードを読む側には意図がやや不明瞭になります。

3. 暗黙の文字列変換

前述のとおり、Java では、あらゆる変数・オブジェクト・式を String 型に変換できます。

さらに、String 型と他の型を連結すると、自動的に文字列化が行われます。例:

int a = 5;
String name = "Anya" + a;            //  name は文字列 Anya5 を保持する

int a = 5;
String city = a + "New York" + a;   //  city は文字列 5New York5 を保持する

int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; //  message は文字列 Hello! 10Yo を保持する

これら3つの例では、intString を問題なく連結しており、結果は常に String 型になります。

重要! String 型に対して算術演算はできません。たとえ文字列が数字だけで構成されていても同様です。

例:

int a = 5;
String name = "1" + a;              //  name は文字列 15 を保持する

int a = 5;
String city = a + "9" + a;          //  city は文字列 595 を保持する

int number = 10;
String code = "10";
String message = "" + number + code; // message は文字列 1010 を保持する 

連結は左から右へ評価されるため、結果がやや予想外になることがあります。例:

int a = 5;
String name = a + a + "1" + a;      // name は文字列 1015 を保持する

評価の順序: ((a + a) + "1") + a

4. 文字列を数値に変換する

Java で数値を文字列に変換するには、空文字列と連結するだけで十分です:

String str = "" + chislo;

では、文字列を数値に変換するにはどうすればよいでしょうか。もちろん、どんな文字列でも数値に変換できるわけではありません。しかし、文字列が数字だけで構成されているなら可能です。そのために Java には専用のメソッドがあります。

使い方は次のとおりです:


int x = Integer.parseInt(stroka);
文字列を数値に変換

ここで、int x は整数変数 x の宣言、stroka は文字列として与えられた数値(数字だけで構成された文字列)です。

例:

String str = "123";
int number1 = Integer.parseInt(str);        //  number1 は数値 123 を保持する

int number2 = Integer.parseInt("321");      //  number2 は数値 321 を保持する

int number3 = Integer.parseInt("321" + 0);  //  number3 は数値 3210 を保持する

int number4 = "321"; //  コンパイルされません: 変数は int 型、値は String 型

負の値でも動作します。Integer.parseInt() はとても賢いメソッドです。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION