在Java中,哪种方法更适合将对象转换为Long?
我正在处理一个API,它在我请求属性时返回在Java中,哪种方法更适合将对象转换为Long?,java,performance,Java,Performance,我正在处理一个API,它在我请求属性时返回Object Object x = r.getProperty("id"); 但我知道一个事实,这个属性特别是长的。这是我正在权衡的两个选择: Long x = Long.parseLong(r.getProperty("id").toString()); Long x = (Long)r.getProperty("id"); 在性能方面,哪一个是首选的?如果你知道这是一个长的,我肯定会选择演员阵容。它更清晰,可能更有效。如果您确定返回类型为Num
Object
Object x = r.getProperty("id");
但我知道一个事实,这个属性特别是长的
。这是我正在权衡的两个选择:
Long x = Long.parseLong(r.getProperty("id").toString());
Long x = (Long)r.getProperty("id");
在性能方面,哪一个是首选的?如果你知道这是一个
长的,我肯定会选择演员阵容。它更清晰,可能更有效。如果您确定返回类型为Number
,则可以调用Number.longValue()
。如果这也不是确定的,那么我可能会选择解析选项,以确保安全,并避免使用示例文件的实例。如果您知道它是长的,我肯定会选择该演员阵容。它更清晰,可能更有效。如果您确定返回类型为Number
,则可以调用Number.longValue()
。如果这两种方法都不确定,那么我可能会选择解析选项,以确保安全,避免出现样板文件的实例。第二种方法速度更快,但也不太宽容:除非该值实际上是长的,否则代码将崩溃
另一方面,第一种方法将在类型更改后仍然有效:如果您以后决定使用整数
、字符串
、字节
,或者使用自定义的字符串
,打印与长
兼容的数值的其他类型,代码将正常工作。因此,第一种方法更健壮。第二种方法速度更快,但不太宽容:除非该值实际上是一个长
,否则代码将崩溃
另一方面,第一种方法将在类型更改后仍然有效:如果您以后决定使用整数
、字符串
、字节
,或者使用自定义的字符串
,打印与长
兼容的数值的其他类型,代码将正常工作。因此,第一种方法更稳健。仅基于直觉——可能是第二种。要分配空间和构造的对象少了一个。为什么将其转换为字符串,然后再将其转换回long会比将其转换为longI有更好的性能?虽然相同,但我一直听说强制转换非常昂贵。就现代Java引擎而言,您听说的强制转换非常昂贵是一个神话。向下转换的性能损失很小(向上转换的性能损失也很小,例如从String
到Object
)。您听到的有关强制转换的内容都是胡说八道。如果这个物体已经很长了,那么除了检查它之外,几乎没有什么可做的。仅仅基于直觉——可能是第二种本能。要分配空间和构造的对象少了一个。为什么将其转换为字符串,然后再将其转换回long会比将其转换为longI有更好的性能?虽然相同,但我一直听说强制转换非常昂贵。就现代Java引擎而言,您听说的强制转换非常昂贵是一个神话。向下转换的性能损失很小(向上转换的性能损失也很小,例如从String
到Object
)。您听到的有关强制转换的内容都是胡说八道。如果对象已经很长了,实际上除了检查之外什么也做不了。同意,我假设施法速度会快一点,尽管这个操作的速度可能不会对性能产生任何实际影响,除非你的程序根本没有IO。是的,这个问题更多的是关于好奇心而不是任何东西。。。IO肯定是程序中最慢的部分。同意,我假设施法速度会快一点,尽管这个操作的速度可能不会对性能产生任何实际影响,除非你的程序根本没有IO。是的,这个问题更多的是关于好奇心而不是任何东西。。。IO肯定是程序中最慢的部分。