-3

目前我可以打印出a的字体大小和范围;;使用以下方法的除了 bolean 之外的原始 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, int, long,short

  3. Java 也有八个相应的类,主要用于自动装箱,但也提供有关原始类型的信息,如您的示例代码中所示。

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

  5. 术语“数据类型”也指对象类型。Java 没有 Csizeof运算符的等效项,因为您不需要像在 C 中那样分配内存。如果您确实需要知道对象的内存占用,请查看此处

于 2011-07-08T00:08:10.980 回答
0

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

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.");
  }
}
于 2020-03-04T17:07:27.607 回答