我对Java中的变量类型有疑问。 如果我有一个长变量(称为x)和一个int变量(称为y), 什么是(x / y)的类型?
我尝试使用“instanceof”选项,但它没有帮助我。
IMO很长,但我只想确定。提前谢谢!
答案 0 :(得分:8)
由于规则扩大,long/int
是long
,基本上任何两个值的结果都是其中任何一个范围内的“最宽”。在任何具有其他号码的操作中,byte
,short
和char
类型都会转换为int
。 (但不是像String + char
)
注意:long % int
也是long
,即使它不可能超出int
范围,同样int / long
也是long
虽然它只能在int
注意2:int * int
仍然是int
,即使有过度流动的可能性很大。
您只能在对象实例上使用instanceof
。基元不是实例。
您可能会发现这些方法很有用
public static void main(String... ignored) {
System.out.println("2 / 1L is " + toString(2 / 1L));
}
public static String toString(boolean b) {
return "boolean " + b;
}
public static String toString(byte b) {
return "byte " + b;
}
public static String toString(char x) {
return "char " + x;
}
public static String toString(short x) {
return "short " + x;
}
public static String toString(int x) {
return "int " + x;
}
public static String toString(long x) {
return "long " + x;
}
public static String toString(float x) {
return "float " + x;
}
public static String toString(double x) {
return "double " + x;
}
打印
2 / 1L is long 2