JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 型とは

日本語
英語 type
ふりがな かた
フリガナ カタ

解説

変数を作るときに、その変数に「どんな値を入れられるのか」を示すもの。
 
データを格納する「変数」は、「型 変数;」と書くことで作られる(これを「変数宣言する」という)。
こうして作られた変数は「変数 =;」という形で値を格納することができる(これを「変数代入する」という)。
この「値」は、どんな値でも入れられるわけではなく、変数を作ったときに指定した「型」によって制限される。
たとえば型を「int」にすれば、変数には-2147483648~2147483647の整数値を入れられるが、実数は入れられない。また、型を「byte」にすれば、-128~127の整数値を入れられるが、int型の時のような大きい整数値は入れられない。

このように、変数にどのような値が入れられるのかを決めるのが「型」である。
 
型そのものにデータを格納することはできない。
たとえば「型 =;」のように、型に値を入れることはできない。
型はあくまで変数の「設計図」であり、変数そのものではないからである。
型は、「バケツを作るための金型」だと考えればよい。金型そのものに水は入れられない。金型を元にバケツを作ることで、そのバケツに水を入れることができる。この「バケツ」が「変数」、「水」が「格納する値」、「金型」が「型」である。

型は以下の2種類存在する。
 
プリミティブ型
参照
 
プリミティブ型int型やdouble型、boolean型等のことで、これらの型で宣言された変数整数値、実数値(浮動小数点)、論理値を格納できる。
参照型は、クラス配列の「インスタンス」を参照するための型である。インスタンス参照を通してのみ使用することができ、通常は参照変数宣言して参照を入れてから使用する。
詳しくは「型」「プリミティブ型」「参照」「クラス」「インタフェース」「配列」の項目を参照
 
変数リテラル戻り値は必ず「型」を持っている。
変数は、作られた際の「型」が、その変数の「型」となる。
リテラルは、リテラルによって型が決まる。整数リテラルであればint型、文字列リテラルであればStringクラス参照型である。詳しくはそれぞれのリテラルの項目を参照

戻り値は、メソッドの「戻り値の型」がその値の型となる。
 
変数に格納されている値やリテラル戻り値を、他の変数にコピーする場合、型が一致している必要がある。
型が異なる場合、その「格納先変数の型」へと変換してからコピーする必要がある。
この変換を「型変換」と言い、その際の操作を「キャスト」と言う。
ただし、コピー元の型とコピー先の型によっては型変換が自動的われる場合がある。これを「暗黙的キャスト」という。
またこれらとは別に、プリミティブ型と対応するラッパークラスは「オートボクシング」という機能を使って自動的に変換することができる。
動的に変換できない場合には、キャストったり指定した型へ変換するメソッドを使用する必要があり、これらをわないとコンパイルエラーとなる。
このコンパイルエラーを回避するためにも、変数リテラルメソッド戻り値、この3つがどの型なのか、ということを常に意識してプログラムを組むといいだろう。

参考サイト

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

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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // プリミティブ型のひとつ、int型の変数を宣言します。
        int i;
        // これで変数iが作られました。
        // 変数iはint型を使用して作られたので、int型の範囲の整数値を
        // 入れる事ができます。
        // たとえば、整数値100を入れることができます。
        i = 100;
        System.out.println( i );
        // 100

        // 「int」は型なので、「int」そのものには値を入れられません。
        // ※コンパイルエラーの例
        // int = 100;
        // ※エラーメッセージ
        // トークン "int" に構文エラーがあります。Expression が無効です
        // ※コンパイルエラーの例ここまで

        // 先ほど宣言したiの型は「int型」です。
        // このiの中に格納されている値を渡せるのは、
        // 同じint型変数になります。
        int i2;
        i2 = i;
        System.out.println( i2 );
        // 100

        // 型が異なる変数に代入する場合、コピー元の値を
        // コピー先の型へ変換してから、コピーされます。
        // たとえば、int型からbyte型へは「キャスト」を行って
        // 変換する必要があります。
        byte bt;
        bt = (byte)i;
        System.out.println( bt );
        // 100

        // 「(byte)」がキャストです。
        // この明示的キャストを行うことで、変数iに格納されている値が
        // byte型へ変換されて、変数chに格納されました。

        // 型によっては、この明示的キャストを行わなくても、自動的に
        // キャストしてくれる場合もあります。
        // たとえば、int型からlong型へは自動的に変換されます。
        long l;
        l = i;
        System.out.println( l );
        // 100

        // 変数iに格納されている値が自動的にint型からlong型へ
        // 変換されました。これを暗黙的キャストと言います。

        // いずれの変換も、コピー元である変数iに格納されている値は
        // 変化せず、int型のままです。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // プリミティブ型のひとつ、int型の変数を宣言します。
        int i;
        // これで変数iが作られました。
        // 変数iはint型を使用して作られたので、int型の範囲の整数値を
        // 入れる事ができます。
        // たとえば、整数値100を入れることができます。
        i = 100;
        System.out.println( i );
        // 100

        // 「int」は型なので、「int」そのものには値を入れられません。
        // ※コンパイルエラーの例
        // int = 100;
        // ※エラーメッセージ
        // トークン "int" に構文エラーがあります。Expression が無効です
        // ※コンパイルエラーの例ここまで

        // 先ほど宣言したiの型は「int型」です。
        // このiの中に格納されている値を渡せるのは、
        // 同じint型変数になります。
        int i2;
        i2 = i;
        System.out.println( i2 );
        // 100

        // 型が異なる変数に代入する場合、コピー元の値を
        // コピー先の型へ変換してから、コピーされます。
        // たとえば、int型からbyte型へは「キャスト」を行って
        // 変換する必要があります。
        byte bt;
        bt = (byte)i;
        System.out.println( bt );
        // 100

        // 「(byte)」がキャストです。
        // この明示的キャストを行うことで、変数iに格納されている値が
        // byte型へ変換されて、変数chに格納されました。

        // 型によっては、この明示的キャストを行わなくても、自動的に
        // キャストしてくれる場合もあります。
        // たとえば、int型からlong型へは自動的に変換されます。
        long l;
        l = i;
        System.out.println( l );
        // 100

        // 変数iに格納されている値が自動的にint型からlong型へ
        // 変換されました。これを暗黙的キャストと言います。

        // いずれの変換も、コピー元である変数iに格納されている値は
        // 変化せず、int型のままです。
    }
}

この単語を含むページ

「解説」に含まれているページ

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

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