如何打印java数据类型的类型、大小和范围?特别是那些有修饰语的?

如何打印java数据类型的类型、大小和范围?特别是那些有修饰语的?,java,types,modifier,Java,Types,Modifier,目前我可以打印出a;;的字体大小和范围;;基本java数据类型(Bolean除外),使用以下方法 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); } publ

目前我可以打印出a;;的字体大小和范围;;基本java数据类型(Bolean除外),使用以下方法

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);
    }
公共类sizJ{
公共静态无效显示(类类型、整数大小、最小数、最大数){
System.out.printf(“%-6s%-2s%-20s%s\n”,类型、大小、最小值、最大值);
}
公共静态void main(字符串[]args){
System.out.printf(“%s%-2s%-20s%s\n”、“类型”、“大小”、“最小值”、“最大值”);
显示(Byte.TYPE、Byte.SIZE、Byte.MIN\u值、Byte.MAX\u值);
显示(Character.TYPE,Character.SIZE,(int)Character.MIN_值,(int)Character.MAX_值);
显示(Integer.TYPE、Integer.SIZE、Integer.MIN\u值、Integer.MAX\u值);
显示(Float.TYPE、Float.SIZE、Float.MIN\u值、Float.MAX\u值);
显示(Double.TYPE、Double.SIZE、Double.MIN\u值、Double.MAX\u值);
显示(Long.TYPE、Long.SIZE、Long.MIN\u值、Long.MAX\u值);
显示(Double.TYPE、Double.SIZE、Double.MIN\u值、Double.MAX\u值);
显示(SignedDouble.TYPE、Double.SIZE、Double.MIN\u值、Double.MAX\u值);
}
}

从论坛复制的代码

问题是如何打印相同的字符,比如有符号长字符、有符号字符或无符号整数


请帮忙。

这里有很多事情需要澄清…:

  • Java没有像C这样的无符号原语——顺便说一句,对于那些需要做很多工作的人来说,这是一个重要的问题,例如,实现一个哈希函数。没有
    无符号
    关键字,没有无符号类型,当然也没有相应的类型大小

  • Java只有八个:
    boolean
    byte
    char
    double
    float
    int
    long
    short

  • Java还有八个相应的类,主要用于,但也用于提供有关基本类型的信息,如示例代码所示

  • 修饰符(例如,
    public
    final
    static
    )只影响原语的可见性和访问语义,而不影响其基本属性,如大小或范围

  • 术语“数据类型”也指对象类型。Java对于C
    sizeof
    操作符没有等价物,因为您不需要像在C中那样使用它来分配内存。如果您确实需要知道对象的内存占用,请查看


  • Java没有sizeof运算符来查找基本数据类型的大小,但除Boolean外,所有Java基本数据包装器都提供了一个以位为单位的大小常量,该常量可以除以8来获得以字节为单位的数据类型的大小

    class SizePrimitiveTypes
    {
      public static void main (String[] args)
      {
        System.out.println("Size of byte: " + (Byte.SIZE/8) + " bytes.");
        System.out.println("Size of short: " + (Short.SIZE/8) + " bytes.");
        System.out.println("Size of int: " + (Integer.SIZE/8) + " bytes.");
        System.out.println("Size of long: " + (Long.SIZE/8) + " bytes.");
        System.out.println("Size of char: " + (Character.SIZE/8) + " bytes.");
        System.out.println("Size of float: " + (Float.SIZE/8) + " bytes.");
        System.out.println("Size of double: " + (Double.SIZE/8) + " bytes.");
      }
    }
    

    我会说只打印出一个随机值(因为无符号类型是Java不知道的)。顺便说一句,我在你的代码中发现了一个
    SignedDouble.TYPE
    :这是你的
    enum
    吗?:-)