在 Java 中重载按位运算符
Overloading bitwise operators in Java
我了解到 Java 没有为程序员重载运算符提供条件。
我还了解到 +
是 java,
中唯一重载的运算符
但是,
运算符 &
|
^
作为按位运算符处理整数操作数。
运算符 &
|
^
将布尔操作数用作逻辑运算符。
我的问题:
我能说运算符&
^
|
重载了吗?
关于将这些运算符称为整数操作数的按位运算符和布尔操作数的逻辑运算符,我的行话是否正确?
因为我们倾向于将数字视为数字,所以我们通常不认为算术运算符会被重载,尽管整数除法与浮点数除法有很大不同。
所以从技术上讲,所有算术运算符都非常重载。
确定重载的最简单方法是想象您必须调用 Operators.plus()
而不是 + 运算符。当需要重载该方法以处理不同的输入时,您的操作员也需要重载。
因此,例如,当您在字符串连接意义上使用 +
时,这将等效于 Operators.plus(Object first, Object second)
,而整数加法将包含在 Operators.plus(int first, int second)
中,依此类推.
(但是,作为一个思想实验,如果我们采用 "relaxed"(并且不正确)的观点认为所有数字都只是数字,那么我们可以说按位运算符的行为相同所有序数类型,前提是我们将 boolean
视为一位长的数字。)
P.s.: 唯一要记住的重要事情(从实际的角度来看)是 |
和 &
与 boolean
运算符 不要短路,而||
和&&
会。只要人们理解您的意思,我个人就不会过分担心术语。由于无论如何您都不能在 Java 中重载运算符(作为用户),因此它不如在您可以重载的语言中那么重要。
我了解到 Java 没有为程序员重载运算符提供条件。
我还了解到 +
是 java,
但是,
运算符 &
|
^
作为按位运算符处理整数操作数。
运算符 &
|
^
将布尔操作数用作逻辑运算符。
我的问题:
我能说运算符
&
^
|
重载了吗?关于将这些运算符称为整数操作数的按位运算符和布尔操作数的逻辑运算符,我的行话是否正确?
因为我们倾向于将数字视为数字,所以我们通常不认为算术运算符会被重载,尽管整数除法与浮点数除法有很大不同。
所以从技术上讲,所有算术运算符都非常重载。
确定重载的最简单方法是想象您必须调用 Operators.plus()
而不是 + 运算符。当需要重载该方法以处理不同的输入时,您的操作员也需要重载。
因此,例如,当您在字符串连接意义上使用 +
时,这将等效于 Operators.plus(Object first, Object second)
,而整数加法将包含在 Operators.plus(int first, int second)
中,依此类推.
(但是,作为一个思想实验,如果我们采用 "relaxed"(并且不正确)的观点认为所有数字都只是数字,那么我们可以说按位运算符的行为相同所有序数类型,前提是我们将 boolean
视为一位长的数字。)
P.s.: 唯一要记住的重要事情(从实际的角度来看)是 |
和 &
与 boolean
运算符 不要短路,而||
和&&
会。只要人们理解您的意思,我个人就不会过分担心术语。由于无论如何您都不能在 Java 中重载运算符(作为用户),因此它不如在您可以重载的语言中那么重要。