-3

現在、タイプのサイズと範囲を出力できます;; 次のメソッドを使用して、ボリアンを除くプリミティブな Java データ型。

public class sizJ {

    public static void display(Class<?> type, int size, Number min, Number max) {
            System.out.printf("%-6s %-2s %-20s %s\n", type, size, min, max);
    }

    public static void main(String[] args) {
            System.out.printf("%s %-2s %-20s %s\n","type","size","min","max");
            display(Byte.TYPE, Byte.SIZE, Byte.MIN_VALUE, Byte.MAX_VALUE);
            display(Character.TYPE, Character.SIZE, (int) Character.MIN_VALUE, (int) Character.MAX_VALUE);
            display(Integer.TYPE, Integer.SIZE, Integer.MIN_VALUE, Integer.MAX_VALUE);
            display(Float.TYPE, Float.SIZE, Float.MIN_VALUE, Float.MAX_VALUE);
            display(Double.TYPE, Double.SIZE, Double.MIN_VALUE, Double.MAX_VALUE);
            display(Long.TYPE, Long.SIZE, Long.MIN_VALUE, Long.MAX_VALUE);
            display(Double.TYPE, Double.SIZE, Double.MIN_VALUE, Double.MAX_VALUE);

            display(SignedDouble.TYPE, Double.SIZE, Double.MIN_VALUE, Double.MAX_VALUE);
    }

}

フォーラムからコピーされたコード。

問題は、signed long、signed char、unsigned int など、同じものをどのように印刷できるかということです。

親切に助けてください。

4

2 に答える 2

2

ここで明確にするべきことがたくさんあります...:

  1. Java には、C のような符号なしプリミティブはありません。ちなみに、ハッシュ関数を実装するなど、多くのビット操作を行う必要がある人にとっては、重大な問題です。キーワードもunsigned、符号なしの型も、もちろん、対応する型のサイズもありません。

  2. Java のプリミティブ型boolean, byte, char, double, float,の 8 つだけintですlongshort

  3. Java には、主にautoboxingに使用される 8 つの対応するクラスもありますが、サンプル コードに見られるように、プリミティブ型に関する情報を提供するためにも使用されます。

  4. 修飾子 ( publicfinal、 などstatic) は、プリミティブの可視性とアクセス セマンティクスにのみ影響し、サイズや範囲などの基本的なプロパティには影響しません。

  5. 「データ型」という用語は、オブジェクト型も指します。Java には、C のsizeofようにメモリを割り当てる必要がないため、C 演算子に相当するものはありません。オブジェクトのメモリ フットプリントを知る必要がある場合は、こちらを参照してください

于 2011-07-08T00:08:10.980 に答える