JavaA2Z

KAB-studio > プログラミング > JavaA2Z > ワイドニング変換とは

ワイドニング変換

日本語 拡大変換
英語 widening conversion
ふりがな わいどにんぐへんかん
フリガナ ワイドニングヘンカン

解説

プリミティブ型の値をサイズの小さい方から大きい方へと変換すること。
=演算子」による「代入変換」や、メソッド引数に渡した際の「メソッド呼び出し変換」で自動的われる「暗黙的キャスト」のひとつ。
 
たとえばbyteからlong代入する場合のように、サイズの大きいプリミティブ型変数からサイズの小さいプリミティブ型変数へ値を代入する際には、データの変換がわれる。これは、サイズが異なるためそのままでは代入できないからである。
この変換を「ワイドニング変換」と言う。
 
変換の内容は、整数値としては「サイズが増えた部分に0を加える」という単純なものである。
ただし、ビット単位で見ると、複雑な変換をっている。
int等の整数の場合、左端のビット符号ビットとなっており、また負の数は「2の補数」で表現されるため、サイズの変換をう際にはこれらの情報が維持されるように変換される。
浮動小数点の場合、floatdoubleではビット単位の構造がだいぶ違うため、符号指数部仮数部毎に変換される。
整数から浮動小数点へ変換する場合、データの形式が全く異なるため、同じ値の浮動小数点に変換される。
 
参照変数の場合でも、一応「アップキャスト」をワイドニング変換と呼ぶ。ただし、アップキャストの方が一般的であるため、あまりこの用法では使用されない。
アップキャストでは参照値やインスタンスに「全く変化が起きない」ことを考えると、プリミティブ型のワイドニング変換とは別物と考えた方がいいだろう。
 
実際の所、アップキャストの例を挙げるまでもなく、あまり使用されない用語である。
ちなみに、逆に大きいから小さいへと変換することを「ナローイング変換」と呼ぶ。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // サイズの小さい型からから大きい型へと
        // 「ワイドニング」します。
        byte b = 10;
        long l = b;
        System.out.println( b );
        // 10

        // 同じく浮動小数点の場合。
        float f = 2.0F;
        double d = f;
        System.out.println( d );
        // 2.0

        // float型とdouble型では、同じ浮動小数点とはいえ
        // ビットでの構造はまったく異なります。
        // つまり、=演算子が「double型に合うように変換した」
        // というわけです。

        // アップキャストも一応「ワイドニング変換」になります。
        // 実際には変換されていませんが。
        String string = new String( "あいうえお" );
        Object object = string;
        System.out.println( object );
        // あいうえお
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // サイズの小さい型からから大きい型へと
        // 「ワイドニング」します。
        byte b = 10;
        long l = b;
        System.out.println( b );
        // 10

		// 同じく浮動小数点の場合。
        float f = 2.0F;
        double d = f;
        System.out.println( d );
        // 2.0

        // float型とdouble型では、同じ浮動小数点とはいえ
        // ビットでの構造はまったく異なります。
        // つまり、=演算子が「double型に合うように変換した」
        // というわけです。

        // アップキャストも一応「ワイドニング変換」になります。
        // 実際には変換されていませんが。
        String string = new String( "あいうえお" );
        Object object = string;
        System.out.println( object );
        // あいうえお
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/12/14
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。