BigDecimal bd = new BigDecimal(); // 创建一个空的BigDecimal对象 报错
时间: 2023-08-18 07:14:54 浏览: 45
对不起,我之前给出的代码有误。实际上,`BigDecimal`类的构造函数不接受没有参数的调用。为了创建一个空的`BigDecimal`对象,你可以使用`BigDecimal`类提供的静态常量`BigDecimal.ZERO`。
```java
BigDecimal bd = BigDecimal.ZERO; // 创建一个值为0的BigDecimal对象
```
这样,你可以成功创建一个值为0的 `BigDecimal` 对象。
如果你想创建一个没有初始值的 `BigDecimal` 对象,你可以使用 `null` 作为初始值,然后在以后的代码中给它赋值。
```java
BigDecimal bd = null; // 创建一个没有初始值的 BigDecimal 对象
// 在以后的代码中给 bd 赋值
bd = new BigDecimal("10.5");
```
这样,你可以先创建一个空的 `BigDecimal` 对象,然后在需要时再为其赋值。请注意,在使用 `bd` 之前,确保它已经被赋予了有效的值,否则可能会引发空指针异常。
相关问题
BigDecimal bigDecimal = new BigDecimal("19.1123999999999");报错
这个错误是因为BigDecimal类型不能直接转换为Integer或Long类型。如果需要将BigDecimal类型转换为Integer或Long类型,可以使用intValue()或longValue()方法。如果需要保留小数位数,可以使用setScale()方法。以下是一个示例代码:
```java
BigDecimal bigDecimal = new BigDecimal("19.1123999999999");
int intValue = bigDecimal.intValue(); // 转换为整型
long longValue = bigDecimal.longValue(); // 转换为长整型
BigDecimal newBigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP); // 保留两位小数
```
BigDecimal为什么不能这样赋值BigDecimal a=new BigDecimal(7); BigDecimal b=a;
在Java中,BigDecimal是不可变的对象,这意味着一旦创建了一个BigDecimal对象,就不能更改它的值。因此,如果您使用BigDecimal a = new BigDecimal(7)创建一个BigDecimal对象,那么a将指向一个值为7的BigDecimal对象。如果您使用BigDecimal b = a将a赋值给b,那么b将指向与a相同的BigDecimal对象,即值为7的BigDecimal对象。这意味着,如果您更改a的值,b的值也会更改,因为它们指向同一个对象。因此,为了避免这种情况,您应该使用BigDecimal b = new BigDecimal(a.toString())来创建一个新的BigDecimal对象,该对象具有与a相同的值,但是指向不同的对象。
以下是一个例子:
```java
BigDecimal a = new BigDecimal(7);
BigDecimal b = new BigDecimal(a.toString());
System.out.println("a = " + a); // 输出:a = 7
System.out.println("b = " + b); // 输出:b = 7
a = a.add(new BigDecimal(3));
System.out.println("a = " + a); // 输出:a = 10
System.out.println("b = " + b); // 输出:b = 7
```