例如,我想知道类中变量的类型:
int x=1;
char c=5;
System.out.println(x+c);// out put is 6
但是我想知道x+c
的类型,它是属于integer
还是character
?并且还想在控制台中打印结果。
有没有找到类型的方法?请以最佳答案帮助我。
有没有找到类型的方法?
从研究的角度来看,您可以阅读Java Language Specification。 section 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
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类的某些方法