如何在Java中打印原始变量的类型

Sag*_*thu 0 java variables primitive type-conversion

我想知道我的类中的变量类型,例如:

int x=1;  
char c=5;
System.out.println(x+c);// out put is 6
Run Code Online (Sandbox Code Playgroud)

但我想知道它的类型x+c,是否属于integercharacter?并且还想在控制台中打印结果.

有没有找到类型的方法?请帮我解决最好的答案.

Jon*_*eet 7

有没有找到类型的方法?

那么,从研究的角度来看,您可以阅读Java语言规范.特别是,第15.18.2节解释了+操作员的工作原理.

如果您只想从执行时的角度来看,有两种选择:

  • 你可以自动装箱,然后看看盒装类型是什么:

    Object o = x + c;
    System.out.println(o.getClass()); // java.lang.Integer
    
    Run Code Online (Sandbox Code Playgroud)
  • 您可以编写一个为所有基本类型重载的方法,并查看编译器选择的方法:

    System.out.println(getCompileTimePrimitiveClass(x + c));
    ...
    private static Class getCompileTimePrimitiveClass(int x)
    {
        return int.class;
    }
    
    private static Class getCompileTimePrimitiveClass(char x)
    {
        return char.class;
    }
    
    private static Class getCompileTimePrimitiveClass(byte x)
    {
        return byte.class;
    }
    
    // etc
    
    Run Code Online (Sandbox Code Playgroud)