PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~型変換~

      2016/03/12

お仕事で型変換しようとするとエラーはいてばっかりでいつも悩まされています(笑)

Javaってとても型にうるさいイメージがありますね。

まだ入門レベルですがそんな印象を受けますw

 

計算での型変換

 

整数どうしで計算した結果は整数になります。

つまり10 ÷ 4 をすると普通は2.5が出てきそうなところですが、実際に出力されるのは小数部が

切り捨てられた「2」が出るというわけです。

 

public class Kata {
	public static void main(String[] args){				
		int a = 10;
		int b = 4;
	
		System.out.println("a / b = " + a / b); //10÷4=2.5だが小数部は切り捨て
		System.out.println("a / b = " + (double)a / b); //型キャスト		
	}

}

 

 

もし、整数型から「2.5」を出力したければ型キャストしてみましょう。

(double)a / b のように型名を()で区切ったものキャスト演算子といいます。

そうすると上記のソースの場合ですと、本来はint型どうしの計算ですが

double型に変換して計算結果をdouble型で出力することができます。

異なる型どうしの変換・代入について

 

int型、double型、float型…などそれぞれの型で扱える数値の範囲が異なりますが、

これが精度の高さの違いです。

 

以下のコードではint型はdouble型に比べて扱える数値の範囲が狭いということがポイントです!

 

public class Kata {
	public static void main(String[] args){				
		int a = 10;
		double c = 4;
	
		System.out.println("a / b = " + a / c); //double型で計算される
		
		c = a;
		System.out.println(c); //10→10.0になる
	}

}

 

■型変換について

 

上記のコードではint型とdouble型の混じった「a / c 」という計算がありますね。

整数どうしの計算は、計算結果が数値の範囲が広い方に合わせて変換されるそうです。

つまり、結果としては扱える数値の範囲が広いdouble型で「2.5」が出力されるわけです。

 

■代入について

また「c = a;」は出来ますが、「a = c;」はエラーになります。

int型はdouble型に比べて扱える数値の範囲が狭いので、以下のようになります。

  • int型→double型に代入するのは可能
  • double型→int型に代入しようとするとエラー

 

ちょっと複雑なルールがあって難しいイメージが崩せておりませんが、今はこんな感じで押さえておきます。

人気ブログランキング

 -