BigDecimal(“0”) 和 BigDecimal.ZERO 之间有区别吗?

发布于 2024-07-09 04:39:12 字数 114 浏览 13 评论 0原文

无论是比较还是初始化新变量,使用其中哪一个有区别吗?

我知道 BigDecimal.ZERO 是 1.5 的功能,所以这是一个问题,但假设我使用 1.5,这有关系吗?

谢谢。

Either for comparisons or initialization of a new variable, does it make a difference which one of these you use?

I know that BigDecimal.ZERO is a 1.5 feature, so that's a concern, but assuming I'm using 1.5 does it matter?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

还在原地等你 2024-07-16 04:39:12

BigDecimal.ZERO 是预定义常量,因此不必像 BigDecimal("0") 那样在运行时从字符串进行计算。 它会更快并且不需要创建新对象。

如果您的代码需要在 1.5 之前的版本上运行,那么您可以使用(饱受诟病的)Singleton 模式来创建一个相当于 BigDecimal.ZERO 的对象。 第一次使用时,它将调用 BigDecimal("0") 来创建一个零对象,并在后续调用时返回该对象。 否则,如果您的代码在 1.5 系统上运行,您的单例对象可以只返回 BigDecimal.ZERO,而不会造成运行时损失。

BigDecimal.ZERO is a predefined constant and therefore doesn't have to be evaluated from a string at runtime as BigDecimal("0") would be. It will be faster and won't require creation of a new object.

If your code needs to run on pre-1.5, then you can use the (much maligned) Singleton pattern to create an object equivalent to BigDecimal.ZERO. The first time it is used, it would call BigDecimal("0") to create a zero object, and return that object on subsequent calls. Otherwise, if your code is running on a 1.5 system, your singleton object can just return BigDecimal.ZERO with no runtime penalty.

逆夏时光 2024-07-16 04:39:12

使用 ZERO 不会创建新对象或需要任何解析。 绝对是要走的路。

Using ZERO doesn't create a new object or require any parsing. Definitely the way to go.

祁梦 2024-07-16 04:39:12

在讨论运行时惩罚之前,请确保这段代码很重要。 设置分析并衡量完整的用例。

尽管如此,还是更喜欢使用 Bigdecimal.ZERO,因为它会在编译时进行检查,而您可能会意外键入 new BigDecimal("9") ,编译器会接受它,但这会导致错误到您的应用程序中。

Before talking about runtime penalties, make sure that this piece of code matters. Set up profiling and measure the complete use case.

Nevertheless, prefer Bigdecimal.ZERO as it's checked at compile time whereas you can accidentally type new BigDecimal("9"), which the compiler will accept, but which will cause bugs into your application.

扮仙女 2024-07-16 04:39:12

出于好奇,我检查了 BigDecimal 的构造函数,它没有对“0”字符串进行任何优化。 所以肯定是的,有区别。

Out of curiosity I checked to constructor for BigDecimal and it doesn't have any optimizations for the "0" string. So definitely yes, there's a difference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文