プログラミング

プログラミング初心者のJavaSilver修羅の道#6〜型変換とラッパークラス〜




プログラミング初心者の私が実務未経験転職するにあたり、会社の研修資料以外にも本格的に自主的な勉強をするためについに始めました。今回はそのシリーズの第6段となります。過去記事は下記から見れます。

現在使用している参考書は「オラクル認定資格教科書 JavaプログラマSilver SE11」いわゆる紫本と呼ばれる参考書です。今後は白本・黒本を活用しつつ勉強していくと思います。

オラクル認定資格教科書 JavaプログラマSilver SE11

基本データ型の型変換

暗黙型変換

①変数への代入で利用

1.(short型からint型へ暗黙型変換)
short s = 10 ;
int i = s ;

2.(int型からfloat型へ暗黙型変換)
float f = 7 / 6 ; → ※7/6は1と計算される
f変数には1.0が格納される。

3.配列
int [] array = new int [3] ;
array[0] = ‘a’ ;//char型からint型へ
array[1] = 1.0F ;//float型からint型へ(コンパイルエラー
array[2] = 2.0 ;//double型からint型へ(コンパイルエラー

キャストを使用することでコンパイルエラーを回避できます!

②メソッドの引き数で利用

呼び出し側
int i = 100 ;
method(i) ;

定義側
void method (double d){}

※メソッドの引数でint値を渡し、double型で宣言した変数で受け取る。d変数には100.0が格納される。

③メソッドの戻り値で利用

呼び出し側
double d = method() ;

定義側
int method() {
int i = 100 ;
return i ; }

※メソッドで処理した結果をint型で返す。戻り値をdouble型で宣言した変数で受け取る。

キャストによる型変換

①変数への代入で利用

1.(int型からshort型へキャストによる型変換)
int i = 10 ;
short s = (short) i ;

2.(double型からint型へキャストによる型変換)
double d = 10.5 ;
int i = (int) d ;

iには10が格納される

②メソッドの引き数で利用

呼び出し側
double d = 10.5 ;
method((int) d) ;

定義側
void method (int i){}

※メソッドの引数でdouble型をint型に変換してからint型で宣言した変数で受け取る。i変数には10が格納される

③メソッドの戻り値で利用

呼び出し側
int i = method() ;

定義側
double method() {
double d = 10.5 ;
return d ; }

※メソッドで処理した結果をint型に変換してから返す。戻り値をint型で宣言した変数で受け取る。i変数には10が格納される

型変換での注意

インクリメント/デクリメントでは型変換は行われないため、+のようにオペランドを2つとる演算子には次のルールが適用される。

より大きい方の型に変換される。

long,float,double以外はint型に変換される。

 

short s = 10 ;
s = ++s ;
 s = s + 1 ;(コンパイルエラー

 

→short型のsとint型の1を計算時、より大きい方の方に変換されるため、最終的にint型からshort型の変数sに代入する処理となる。この場合は、キャストを使用することでコンパイルエラーを回避できる。

 

short s = 10 ;
  s = (short)(s +1) ;

 

ラッパークラス(Boxing/Unboxing)

Javaでは、基本データ型の値を参照型として扱う専用のクラスが提供されています。これをラッパークラスと呼びます。

例えば、Integerクラスを使用すると、基本データ型であるint型の値を参照型として扱えるようになります。

Boxing

基本データ型からラッパークラスへの自動変換をBoxingと呼びます。

Unboxing

ラッパークラスから基本データ型への自動変換をUnboxingと呼びます。

Boxingでは暗黙の型変換は行われない。

 

基本データ型同士は暗黙の型変換が行われる

double d1 = 10 ;//int型からdouble型への変換

 

Boxing下では暗黙の型変換は行われない

Double d2 = 10;//コンパイルエラー

 

ABOUT ME
ヒロ
社会人4年目/25歳/食品商社で2年間営業した後、IT業界にシステムエンジニアとして転職/Java,PHP言語を扱う開発エンジニア