long <name> = (long) <expression>; 是什么意思?在 Java 中做什么?
What does long <name> = (long) <expression>; do in Java?
下面表达式前的语句中的(long)
和(int)
是什么意思?
long years = (long) (minutes / minutesInYear);
int remainingDays = (int) (minutes / 60 / 24) % 365;
转换对象,因为 int 不是 long,long 也不是 int。
int i = (int) 10L;
- 因为 10L 很长,而您希望它是整数。
您看到的是从一种值类型转换为另一种值类型。
编辑:之所以可能,是因为如果您正在使用泛型类型或继承(参见示例)并且您无法事先确定对象类型,则可能需要它。但是对于这种代码,通常最好首先使用正确的类型并避免错误! (在本例中为双)
由于int没有十进制值,所以int对象中存储的数据不会是计算的准确值(long相同)
如果您想要准确的值,您应该查看双精度值。
顺便说一句,这也适用于非数值:
Object car = new Car();
Car myNewCar = (Car) car;
希望对您有所帮助。
(minutes / minutesInYear)
不清楚它将 return 的变量类型。如果你想要它在一个int变量中,你必须在它之前写(int)
。这称为 "typecasting",它基本上将一种格式转换为另一种格式。您会注意到 int a = 10.5;
不起作用,但 int a = (int) 10.5;
起作用。
在您的示例中,您希望:(minutes / minutesInYear)
存储在浮点数中。所以,为了确保它变成一个浮点数,你使用 (float)
对它进行类型转换
你说的这个东西叫做选角。
您可以将右侧的表达式转换为左侧的表达式。
可以对原始类型进行转换,也可以对 类 进行转换。
转换 意味着获取一个特定类型的对象并将其“转换为”另一种对象类型。此过程也称为转换变量。
更多内容请阅读here.
在您的情况下,您使用转换是因为您正在将基本类型 double(位于右侧)的变量转换为 int在左边。
在括号内包含类型通常意味着强制转换,不仅在 Java 中而且在其他语言(例如 C#)中也是如此。
在第一种情况下,如果 minutes 和 minutesInYear 是整数,操作将产生一个整数。 然后将其转换为 long,它与整数相同,但为 64 位而不是 32 位(它可以存储更大的值)。
在第二种情况下恰好是相同的,但是你将它转换为一个整数,这可能是多余的(不是必要的)因为结果已经是一个整数。
然而,如果您将非整数值(浮点型、双精度)转换为整数值(字节、短整型、整数、 long) 它将 return 截断值 ,而不是舍入值。
下面表达式前的语句中的(long)
和(int)
是什么意思?
long years = (long) (minutes / minutesInYear);
int remainingDays = (int) (minutes / 60 / 24) % 365;
转换对象,因为 int 不是 long,long 也不是 int。
int i = (int) 10L;
- 因为 10L 很长,而您希望它是整数。
您看到的是从一种值类型转换为另一种值类型。
编辑:之所以可能,是因为如果您正在使用泛型类型或继承(参见示例)并且您无法事先确定对象类型,则可能需要它。但是对于这种代码,通常最好首先使用正确的类型并避免错误! (在本例中为双)
由于int没有十进制值,所以int对象中存储的数据不会是计算的准确值(long相同)
如果您想要准确的值,您应该查看双精度值。
顺便说一句,这也适用于非数值:
Object car = new Car();
Car myNewCar = (Car) car;
希望对您有所帮助。
(minutes / minutesInYear)
不清楚它将 return 的变量类型。如果你想要它在一个int变量中,你必须在它之前写(int)
。这称为 "typecasting",它基本上将一种格式转换为另一种格式。您会注意到 int a = 10.5;
不起作用,但 int a = (int) 10.5;
起作用。
在您的示例中,您希望:(minutes / minutesInYear)
存储在浮点数中。所以,为了确保它变成一个浮点数,你使用 (float)
你说的这个东西叫做选角。
您可以将右侧的表达式转换为左侧的表达式。
可以对原始类型进行转换,也可以对 类 进行转换。
转换 意味着获取一个特定类型的对象并将其“转换为”另一种对象类型。此过程也称为转换变量。
更多内容请阅读here.
在您的情况下,您使用转换是因为您正在将基本类型 double(位于右侧)的变量转换为 int在左边。
在括号内包含类型通常意味着强制转换,不仅在 Java 中而且在其他语言(例如 C#)中也是如此。
在第一种情况下,如果 minutes 和 minutesInYear 是整数,操作将产生一个整数。 然后将其转换为 long,它与整数相同,但为 64 位而不是 32 位(它可以存储更大的值)。
在第二种情况下恰好是相同的,但是你将它转换为一个整数,这可能是多余的(不是必要的)因为结果已经是一个整数。
然而,如果您将非整数值(浮点型、双精度)转换为整数值(字节、短整型、整数、 long) 它将 return 截断值 ,而不是舍入值。