【Java入門】キャストとは?-データ型の暗黙的・明示的型変換のハナシ

プログラミング

皆さんこんにちは、Taro Techです。
今回は、「基礎的なデータ型の型変換」について解説していきます。

Javaにおいてデータを扱うときはデータ型といって扱いたいデータの型に合わせて変数を宣言し、その変数に値を格納するという考えがあります。

この記事では、そんなデータ型の型を変換して違う型にも代入していく技術についてお話します。

1.そもそもデータ型とは?

Javaではデータを扱うときに、まずそのデータを格納するための領域をコンピュータ上に用意してあげる必要があります。その時に用意する領域(一般的には箱のようなイメージ)のことをデータ型と呼びます。

データ型について詳しく知りたい方は以下の記事を参考にしてみてください。

2.データ型の型変換

Javaにおいて算術演算や代入演算を行う場合、基本的には同じ型のデータ同士で演算してあげる必要があります。しかし、コーディングをしていくうえで同じ型とだけ演算するように設計すればいいかといえばそうはいかない場合もあります。

コンピュータは頭がいいので、コーディングをする際のデータの書き方によって、はじめからこの書き方だからこの型だ!と勝手に変換してくれます。

コンピュータ内での処理イメージ

そのため人間側で型を自由に指定したい場合などに、型を変えてあげる「型変換」が有効になるのです。

3.型変換の種類

基本的な型変換には大きく分けて2つの種類があります。

型変換の種類
  1. 暗黙的な型変換
  2. 明示的な型変換(キャスト)

それぞれの型変換はデータ型の「汎用性の高さ」によって使い分けることができます。

型変換のイメージ
JavaDog
JavaDog

ものによっては変換できない場合があるので注意が必要です。
例えば、boolean型(true or false)⇔整数型(intやdoubleなど)のような変換はできません。

3-1.暗黙的な型変換

暗黙的型変換とは、コンピュータ上でデータ型の汎用性の高さを判定したうえで、人間が意識することなく型の変換を自動的に行ってくれることです。 汎用性の小さいものを汎用性のより大きいものへ代入する場合や、汎用性の大きさが異なる者同士での演算でこの暗黙的な型変換が行われます。

イメージとしてはまさに「大は小を兼ねる」のような感じです。

1

//int型からdouble型への暗黙的な変換
int i = 1;
double d = i;
System.out.println(d);
→結果は1.0と表示される

上記の場合だと始めに整数型であるintに1を代入しています。
次に、変数i(中身は整数の1)をより汎用性の高いdouble型(実数型)に代入する際に暗黙的な型変換が行われ、dに代入される際に自動的に1.0に変換してくれるのです。

例2

//int型とdouble型の算術
int i = 10;
double d = 2.0;
System.out.println(i * d); 結果:20.0(算術結果は実数型になる)
System.out.println(i + d); 結果:12.0

上記のようにint型とdouble型で算術を行う場合はdouble型が優先されるため、算術結果も自動的にdouble型に変換されます。

3-2.明示的な型変換(キャスト)

明示的な型変換は、汎用性の大きいものを汎用性の小さいものへ代入するときに行われます。
この明示的な型変換のことを別名「キャスト」と呼び、変換先の型を()で囲って指定します。

上記で述べているように、汎用性の大きいものを小さいものへ代入するときはこのキャストを行わないとコンパイルエラーとなってプログラムがうまく実行できません。

使用例

//double型からint型への変換
int i = (int)2.5;
System.out.println(i);
→結果は2と表示される。(実数を整数に変換するときに小数点以下は切り捨てられる)

int i = 1.5;
System.out.println(i);
→キャストしていないのでコンパイルエラーになる

上記の例だと、2.5はコンピュータ上で実数型(double or float)として解釈されます。
実数型のままint型(整数型)に代入しようとするとエラーになるので、変換先のint型を()で囲って
2.5の前に(int)を記述してあげることで明示的型変換が行われ、エラー無く実行することができます。

コメント

タイトルとURLをコピーしました