在Java中重载按位运算符

时间:2015-06-12 09:44:03

标签: java operators

我了解到Java并没有为程序员提供超载运算符的条件。 我还了解到+是java中唯一重载的运算符,

但是,

运算符& | ^将积分操作数作为按位运算符。

运算符& | ^将布尔操作数作为逻辑运算符。

我的问题:

  1. 我可以说运营商& ^ |超载吗?

  2. 我的行话是否正确调用这些运算符作为积分操作数上的按位运算符和布尔操作数上的逻辑运算符?

1 个答案:

答案 0 :(得分:3)

因为我们倾向于将数字视为数字,所以我们常常不会认为算术运算符会过载,尽管明显的事实是整数除法与浮点除法有很大不同。

所以从技术上讲,所有算术运算符都非常过载。

确定重载内容的最简单方法是假设您必须调用Operators.plus()而不是+运算符。当需要重载该方法来处理不同的输入时,您的操作员也将如此。

因此,例如,当您在字符串连接意义上使用+时,这将等同于Operators.plus(Object first, Object second),而整数加法将由Operators.plus(int first, int second)覆盖,依此类推。< / p>

(但是,作为思想实验,如果我们采用&#34;放松&#34;(和不正确)视图,所有数字都只是数字,那么我们可以说按位运算符对所有数字的行为相同序数类型,前提是我们将boolean视为一位长的数字。)

Ps:唯一要记住的(从实际角度来看)是|&boolean运算符短路,||&&。只要人们明白你的意思,我个人就不会过分担心术语。因为你无论如何都不能在Java(作为用户)中重载操作符,所以它比你可以使用的语言更不重要。