当前位置: 首页 > 面试题库 >

将对象(类型为double)转换为int

封永嘉
2023-03-14
问题内容

好吧,如果我有这段代码

double a=1.5;
int b=(int)a;
System.out.println(b);

一切正常,但是

Object a=1.5;
int b=(int)a;
System.out.println(b);

运行后给出以下错误(Eclipse没有给出任何错误)

java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer

虽然,当我这样做

Object a=1.5;
double b=(double)a;
int c=(int)b;
System.out.println(c);

要么

Object a=1.5;
int b=(int)(double)a;
System.out.println(b);

再没有错了。

为什么必须将其double首先转换?


问题答案:

声明对象Object a = 1.5,可以通过检查System.out.println(a.getClass())对象是否实际上已强制转换为Double实例来判断。double由于取消装箱约定,可以再次将其强制转换为。之后,该double值可以转换为int

但是,没有从Double实例转换为的取消装箱约定int,因此,ClassCastException如果您尝试这样做,则运行时将发出。它不能直接从Double转到Integer



 类似资料:
  • 我正在创建一个由数组支持的泛型类型堆栈。当我尝试创建泛型类型数组时,Java不允许我这样做。有人告诉我,我必须创建一个类型为Object的数组,并将其转换为泛型类型。我已经将对象数组转换为类型,但如何处理Java不断给我的未检查类型错误? 这就是我目前所处的位置。 更新:我正在创建一个对象数组,然后在方法的末尾将返回类型转换为T类型。

  • 问题内容: 我正在使用返回“对象”类型的普通对象的Web服务。调试清楚地表明此对象中存在某种Array,因此我想知道如何将“ Object”转换为Array(或类似对象)? 我尝试了以下方法: 但是没有任何效果。我总是得到一个InvocationTargetException。 我究竟做错了什么? 编辑 : 可悲的是,我不得不删除指向显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要

  • 问题内容: 在Java中,从Object转换为其他类型时,为什么第二行会产生与转换相关的警告,而第一行却没有? 问题答案: 这是因为在执行时,由于 类型Erase 不会 真正 检查对象是否为a 。真的只是将其投射到。例如: __ 有关更多信息,请参见Angelika Langer的Java泛型常见问题解答 ,尤其是类型擦除部分。

  • 所以我有一个名为ExpandableArrayList的类,它实现了ListInterface。这个ArrayList填充了Item类型的实例(它表示我的泛型类型T)。class Item实现Comparable,并具有以下属性:String itemNo、String Item Name、double price和int quantity。 一个名为CheckLimit的方法应该检查列表中的任何

  • 我是Firebase数据库的新手,我正在遵循谷歌的文档从我的数据库中检索数据。 我有这样的结构: 我的应用程序崩溃。 我不明白与谷歌文档的区别。有人能帮帮我吗?我太纠结了! 错误是:

  • 问题内容: 我正在实现一个接口,该接口的功能类似于可以包含某种对象的表的功能。该接口指定以下功能: 在我的实现中,我感到很困惑的是,我将表数据存储在2D 数组()中。当我需要返回值时,我想执行以下操作(假定只在包含double的列上调用,因此将没有): 但是- Java不允许强制转换为。将其强制转换为可以,因为它是一个对象,而不是基元,但是我的接口指定数据将以形式返回。 所以我有两个问题: 有什么