使用(int)将double转换为int

时间:2016-11-30 07:41:36

标签: java casting

我是初学者,我搜索过并搜索过,找不到这个问题的答案。我知道int test = (int) (5.4);正在向int转换一个double,但我不明白的是(int)是什么。它似乎不是作为方法或类写的。它是以我尚未见过的独特方式编写的,我试图理解为什么这个语句在Java中有效。我本来期望像int test = Math.int(5.4)这样的东西。我不明白为什么这个陈述有效。我希望这是有道理的。

4 个答案:

答案 0 :(得分:1)

这是“铸造操作员”。它在Java语言中有自己的特殊语法(即它不是方法调用)。

它也适用于对象:

 BigInteger n = (BigInteger) session.getAttribute("a number");

它用于两件事:

  • 不同数字类型之间的转换
  • 告诉编译器给定对象具有比编译器可以推断的更具体的类型(*)。这将在运行时检查,如果失败,您将获得ClassCastException。编译器还将检查转换是否完全不可能,如果是这种情况,则在编译时拒绝它。

(*)或甚至不太具体的类型

答案 1 :(得分:0)

double简单地投射到int。这是java支持的语法。当对象转换为特定类时,您会遇到类似的语法:

(ClassName) objectVariable...

您可以使用包装类,但可以使用它们的方法来执行转换。

答案 2 :(得分:0)

Java允许casting,这就是(int)(5.4)的作用! 因此,当您进行转换时,您告诉编译器您需要进行类型转换 这些转换不一定与基元相关,您基本上可以使用任何其他有效的DataType

答案 3 :(得分:0)

什么是Java中的强制转换?

嗯,所有的转换真正意味着将一个特定类型的对象转换为“将其转换为”另一个对象类型。此过程称为转换变量。

投射变量背后的规则是什么? 如果你要投射一个变量,你最有可能做一个所谓的向下投射。这意味着您正在使用Object并将其转换为更“特定”的Object类型。这是一个例子:

Object aSentenceObject = "This is a regular sentence";
String aSentenceString = (String)aSentenceObject;

你看到我们在这里做了什么?由于Object类型是变量的非常宽泛的类型,因此我们将变量“向下转换”为String类型。现在,问题是,这是合法的吗?好吧,你可以看到存储在aSentenceObject中的值只是一个普通的String,所以这个演员是完全合法的。让我们看看相反的情况,一个“向上”:

String aSentenceString = "This is just another regular sentence";
Object aSentenceObject = (Object)aSentenceString;

这里我们采用一个更具体类型(String)的变量,并将其转换为更通用的(Object)变量类型。这也是合法的,实际上,向上转是合法的。


<强> Widening Primitive Conversion

对基本类型的19个特定转换称为加宽基元转换

  • byte to short,int,long,float或double

  • 缩短为int,long,float或double

  • char to int,long,float或double

  • int to long,float或double

  • 长期漂浮或加倍

  • float to double

<强> Narrowing Primitive Conversion

原始类型的22个特定转换称为缩小基元转换:

  • short to byte或char

  • char to byte或short

  • int to byte,short或char

  • long to byte,short,char或int

  • float to byte,short,char,int或long

  • double to byte,short,char,int,long或float

缩小的原始转换可能会丢失有关数值整体幅度的信息,也可能会失去精度和范围。