JavaA2Z

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

long

日本語
英語 long int
ふりがな ろんぐ
フリガナ ロング

解説

プリミティブ型のひとつ。
 
文字を格納するための
ラッパークラスLongクラス
 
long宣言された変数は、64ビット(8バイト)分のメモリ領域を使用する。
左端のビットは正負のフラグとなり、0がプラス、1がマイナスを表す。
残りの63ビットと合わせて、-9223372036854775808~9223372036854775807までの整数値を格納することができる(マイナスの場合は2の補数を使用する)。

intの倍のサイズのため、int変数に入りきらない値を格納するのに使用される。
たとえば「エポックからののべミリ秒」はint変数に入りきらないため、SystemクラスのcurrentTimeMillis()メソッド戻り値がlongである。
ただ、金額等の大きな整数を扱う場合にはBigDecimalクラスを使用することが多い。
 
long変数整数リテラルの値を格納する場合は、整数リテラルの末尾に「L」を付ける必要があるので注意。整数リテラルはそのままだとintとみなされるためである。

参考サイト


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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // long型の変数を宣言します。
        long l;
        // メモリ上に64ビットの領域が確保されました。

        // ここに整数値1000000000000000000Lを格納します。
        // 整数リテラルをlong型にする際は末尾に「L」を付けます。
        l = 1000000000000000000L;
        // それを出力します。
        System.out.println( l );
        // 1000000000000000000

        // long型変数に格納された「1000000000000000000」が
        // どのようにビットとして格納されているか見てみます。
        outputLongBit( l );
        // 0000110111100000101101101011001110100111011001000000000000000000

        // このように、「1000000000000000000」というlong型整数は、
        // 「0000110111100000101101101011001110100111011001000000000000000000」
        // という「0か1」を64個並べた形で格納されています。

        // 最大値と最小値はLongクラスのstaticフィールド
        // として宣言されているのでそれを使いましょう。
        l = Long.MAX_VALUE;
        System.out.println( l );
        outputLongBit( l );
        // 9223372036854775807
        // 0111111111111111111111111111111111111111111111111111111111111111

        l = Long.MIN_VALUE;
        System.out.println( l );
        outputLongBit( l );
        // -9223372036854775808
        // 1000000000000000000000000000000000000000000000000000000000000000

        // 整数リテラルはそのままだとint型になります。
        // なのでint型を超えたサイズの整数リテラルを書くと
        // コンパイルエラーになります。
        // ※コンパイルエラーの例
        // long l2 = 2147483648;
        // ※エラーメッセージ
        // 型 int のリテラル 2147483648 は範囲外です
        // ※コンパイルエラーの例ここまで
        // 末尾に「L」を付ければlong型とみなされます。
        long l2 = 2147483648L;
        System.out.println( l2 );
        // 2147483648
    }

    /**
     * long型変数の中身をビット形式で出力します。
     */
    private static void outputLongBit( long ch )
    {
        long flag = 1;
        StringBuffer strbuf = new StringBuffer();
        // 全ビットを右からチェックします。
        forint iF1 = 0; iF1 < 64; ++iF1 )
        {
            // 取得した順に出力すると逆順になるので、
            // 取得した値を頭に挿入していきます。
            if( ( ch & flag ) == 0 )
            {
                strbuf.insert( 0, "0" );
            }
            else
            {
                strbuf.insert( 0, "1" );
            }
            // 2倍することでビットシフトします。
            flag *= 2;
        }
        System.out.println( strbuf );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // long型の変数を宣言します。
        long l;
        // メモリ上に64ビットの領域が確保されました。

        // ここに整数値1000000000000000000Lを格納します。
        // 整数リテラルをlong型にする際は末尾に「L」を付けます。
        l = 1000000000000000000L;
        // それを出力します。
        System.out.println( l );
        // 1000000000000000000

        // long型変数に格納された「1000000000000000000」が
        // どのようにビットとして格納されているか見てみます。
        outputLongBit( l );
        // 0000110111100000101101101011001110100111011001000000000000000000

        // このように、「1000000000000000000」というlong型整数は、
        // 「0000110111100000101101101011001110100111011001000000000000000000」
        // という「0か1」を64個並べた形で格納されています。

        // 最大値と最小値はLongクラスのstaticフィールド
        // として宣言されているのでそれを使いましょう。
        l = Long.MAX_VALUE;
        System.out.println( l );
        outputLongBit( l );
        // 9223372036854775807
        // 0111111111111111111111111111111111111111111111111111111111111111

        l = Long.MIN_VALUE;
        System.out.println( l );
        outputLongBit( l );
        // -9223372036854775808
        // 1000000000000000000000000000000000000000000000000000000000000000

        // 整数リテラルはそのままだとint型になります。
        // なのでint型を超えたサイズの整数リテラルを書くと
        // コンパイルエラーになります。
        // ※コンパイルエラーの例
        // long l2 = 2147483648;
        // ※エラーメッセージ
        // 型 int のリテラル 2147483648 は範囲外です
        // ※コンパイルエラーの例ここまで
        // 末尾に「L」を付ければlong型とみなされます。
        long l2 = 2147483648L;
        System.out.println( l2 );
        // 2147483648
    }

    /**
     * long型変数の中身をビット形式で出力します。
     */
    private static void outputLongBit( long ch )
    {
        long flag = 1;
        StringBuffer strbuf = new StringBuffer();
        // 全ビットを右からチェックします。
        for( int iF1 = 0; iF1 < 64; ++iF1 )
        {
            // 取得した順に出力すると逆順になるので、
            // 取得した値を頭に挿入していきます。
            if( ( ch & flag ) == 0 )
            {
                strbuf.insert( 0, "0" );
            }
            else
            {
                strbuf.insert( 0, "1" );
            }
            // 2倍することでビットシフトします。
            flag *= 2;
        }
        System.out.println( strbuf );
    }
}

この単語を含むページ

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

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