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

<p>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?</p>

<p>Thanks.</p>

```
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.