数学运算后的变量类型

时间:2014-05-10 13:30:39

标签: java variables types

我对Java中的变量类型有疑问。 如果我有一个长变量(称为x)和一个int变量(称为y), 什么是(x / y)的类型?

我尝试使用“instanceof”选项,但它没有帮助我。

IMO很长,但我只想确定。提前谢谢!

1 个答案:

答案 0 :(得分:8)

由于规则扩大,long/intlong,基本上任何两个值的结果都是其中任何一个范围内的“最宽”。在任何具有其他号码的操作中,byteshortchar类型都会转换为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