[英]Is there a difference between BigDecimal(“0”) and BigDecimal.ZERO?
无论是对于新变量的比较还是初始化,它是否会影响您使用哪一个?
我知道BigDecimal.ZERO是一个1.5特性,所以这是一个问题,但假设我使用1.5是否重要?
谢谢。
BigDecimal.ZERO
是一个预定义的常量,因此不必在运行时从字符串中计算,因为BigDecimal("0")
将是。 它会更快,不需要创建新对象。
如果您的代码需要在1.5之前运行,那么您可以使用(备受诟病的)Singleton模式来创建一个等同于BigDecimal.ZERO
的对象。 第一次使用它时,它会调用BigDecimal("0")
来创建一个零对象,并在后续调用中返回该对象。 否则,如果您的代码在1.5系统上运行,则您的单例对象只能返回BigDecimal.ZERO
而不会损失运行时。
使用ZERO不会创建新对象或需要任何解析。 绝对是要走的路。
在讨论运行时处罚之前,请确保这段代码很重要。 设置分析并测量完整的用例。
不过,更喜欢Bigdecimal.ZERO
因为它在编译时检查过,而你可能会意外地输入new BigDecimal("9")
,编译器会接受它,但这会导致你的应用程序出现错误。
出于好奇,我检查了BigDecimal的构造函数,它没有对“0”字符串进行任何优化。 所以肯定是的,这是有区别的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.