如何在Java中打印基本变量的类型

问题描述 投票:1回答:2

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

int x=1;  
char c=5;
System.out.println(x+c);// out put is 6

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

有没有找到类型的方法?请以最佳答案帮助我。

java variables type-conversion primitive
2个回答
7
投票

有没有找到类型的方法?

从研究的角度来看,您可以阅读Java Language Specificationsection 15.18.2特别说明+运算符的工作方式。

如果仅从执行时的角度来看,则有两个选择:

  • 您可以自动装箱,然后查看装箱的类型是:

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

    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
    

0
投票
    int x= 1;
    char c = 5; // '\u0005'
    char c1=6; // '\u0006'
    //char c2=e;// ->Error
    char c3 = 'a';

    Object o,o1,o3;
    o=c;
    System.out.println("c var is " + c + " " + o.getClass() ); // java.lang.Character
    // out : c var is  class java.lang.Character

    o=x+c;
    o1=x+c1;
   // o+=x+c3; -> error operator + cannot be applied here



    System.out.println("x + c = " + o +
            " type of primitive is " + o.getClass().getTypeName().substring( 10,o.getClass().getName().length() ) );  // out : -> x + c = 6 type of primitive is Integer

    System.out.println("x + c1 = " + o1 +
            " type of primitive is " + o1.getClass().getTypeName().substring( 10,o1.getClass().getName().length() ) ); // also Integer class`enter code here`

如果有人想使用Object类的某些方法

© www.soinside.com 2019 - 2024. All rights reserved.