Java 缺失的特性:操作符重载

铁佛  金牌会员 | 2023-3-17 09:25:27 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 663|帖子 663|积分 1989

  1. 本文介绍了什么是操作符重载、为什么需要操作符重载、如何在Java中实现操作符重载以及一些建议。
复制代码
什么是操作符重载
操作符重载,就是把已经定义的、有一定功能的操作符进行重新定义,来完成更为细致具体的运算等功能。从面向对象的角度说,就是可以将操作符定义为类的方法,使得该操作符的功能可以用来代表对象的某个行为。为什么需要操作符重载
我们来考虑实现这样的功能:使用 BigInteger 来实现的完全平方差公式(a^2 + 2ab + b^2)
  1. private static final BigInteger BI_2 = BigInteger.valueOf(2);
复制代码
常规写法:
  1. BigInteger res = a.multiply(a).subtract(BI_2.multiply(a).multiply(b)).add(b.multiply(b));
复制代码
假设可以对 Java 中的 *、+、- 进行操作符重载,那么我们就可以直接这样写:
  1. BigInteger res = a * a - BI_2 * a * b + b * b;
复制代码
所以,对于非原始类型的数值运算,如果能够进行操作符重载,至少有 2 个好处:

  • 代码写起来更简单,不容易出错
  • 代码更容易阅读,不会一堆括号嵌套
如何在 Java 中实现操作符重载
在 Java 中实现操作符重载,依然是使用我们的黑科技 Manifold[1]。Manifold 可以为 Java 提供各种场景操作符的重载功能,例如算数操作符(包括 +、-、*、/、%)、比较操作符(>、>=、=、、>=、

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表