Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,哪种方法更适合将对象转换为Long?_Java_Performance - Fatal编程技术网

在Java中,哪种方法更适合将对象转换为Long?

在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

我正在处理一个API,它在我请求属性时返回
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肯定是程序中最慢的部分。