一、以整数型礼品交易为例子
int userSend = Integer.valueOf(id);int amount = Integer.valueOf(amountStr);int userAccept = Integer.valueOf(userIdAccept);GiftService giftService = new GiftService();boolean carry1 = giftService.isHavePropertyByUserIdByGiftId(userSend, 1);boolean carry2 = giftService.isHavePropertyByUserIdByGiftId(userAccept, 1);if (carry1 && carry2) {BigInteger userSendCurrentAmount = giftService.getAmountByUserIdAndGiftId(userSend, 1);BigInteger amountBigInt = BigInteger.valueOf(amount);if (userSendCurrentAmount.compareTo(amountBigInt) > 0 && userSendCurrentAmount.compareTo(BigInteger.ZERO) > 0 && amountBigInt.compareTo(BigInteger.ZERO) > 0) {// 执行交易操作} else {// 处理金额不足或者金额为负的情况}} else {ResponseReturnWriterUtil.writeListResponse2(response, 1, "\"双方都持有相应账户才可进行交易\"");}
-
userSendCurrentAmount.compareTo(amountBigInt) > 0
:这部分代码比较了userSendCurrentAmount
和amountBigInt
两个BigInteger
对象的大小关系。如果userSendCurrentAmount
大于amountBigInt
,则返回一个大于 0 的值,表示满足交易条件。这个条件确保了发送者拥有的账户余额 数量大于交易中要转移的数量。 -
userSendCurrentAmount.compareTo(BigInteger.ZERO) > 0
:这部分代码确保userSendCurrentAmount
大于零。这是因为在正常情况下,用户拥有的账户余额 数量应该大于等于零,不能为负数。这个条件是对用户当前拥有的账户余额 数量进行验证。 -
amountBigInt.compareTo(BigInteger.ZERO) > 0
:这部分代码确保amountBigInt
(即交易中要转移的数量)也大于零。因为在交易中,转移的数量应该是正数,不能为零或负数。
综合这三个条件,只有当发送者拥有的账户余额 数量大于交易中要转移的数量,并且这两个数量都大于零时,才会执行交易操作。如果不满足这些条件,则会执行注释为"处理金额不足或者金额为负的情况"的部分代码,即处理交易条件不满足的情况。
二、介绍bigInteger
BigInteger
是 Java 中的一个类,用于表示任意精度的整数。在 Java 中,基本的整数类型(如 int
、long
等)有其范围限制,超出范围后会出现溢出的情况。而 BigInteger
类可以表示任意大小的整数,因此可以用于处理大整数计算,例如在金融领域或密码学中经常会用到。
BigInteger
类的一些重要特点和用法:
- 任意精度整数:
BigInteger
类可以表示任意大小的整数,不受 Java 基本整数类型的范围限制。 - 不可变性:
BigInteger
对象一旦创建,就不能修改其值。任何对BigInteger
对象的运算操作都会生成一个新的BigInteger
对象。 - 支持常见的整数运算操作:
BigInteger
类提供了丰富的方法来进行整数的加、减、乘、除等运算操作。 - 提供比较和判断方法:
BigInteger
类提供了compareTo
方法来比较两个BigInteger
对象的大小关系,以及equals
方法来判断两个BigInteger
对象是否相等。 - 不支持基本类型自动装箱: 由于
BigInteger
是一个类而不是基本数据类型,因此不能直接使用基本类型的运算符对BigInteger
对象进行操作。需要使用BigInteger
类提供的方法来进行运算。 - 静态工厂方法:
BigInteger
类提供了一些静态工厂方法来创建BigInteger
对象,例如valueOf(long val)
可以将一个long
类型的值转换为BigInteger
对象。
BigInteger
类是 Java 中用于表示任意精度整数的类,可以在需要处理大整数计算的场景中发挥重要作用。