Java中的位运算符重载
我了解到Java并没有为程序员提供重载操作符的功能。 我还了解到,Java中的位运算符重载,java,operators,Java,Operators,我了解到Java并没有为程序员提供重载操作符的功能。 我还了解到,+是java中唯一重载的操作符 但是, 运算符&|^作为位运算符处理整数操作数 运算符&|^作为逻辑运算符处理布尔操作数 我的问题: 我能说操作符&^|过载了吗 我的行话把这些运算符称为整数操作数上的位运算符和布尔操作数上的逻辑运算符正确吗 因为我们倾向于将数字视为数字,所以我们通常不认为算术运算符重载,尽管整除与浮点除有着明显的不同 所以从技术上讲,所有的算术运算符都是超负荷的 确定重载内容的最简单方法是,假设您必须调用Oper
+
是java中唯一重载的操作符
但是,
运算符&
|
^
作为位运算符处理整数操作数
运算符&
|
^
作为逻辑运算符处理布尔操作数
我的问题:
&
^
|
过载了吗因为我们倾向于将数字视为数字,所以我们通常不认为算术运算符重载,尽管整除与浮点除有着明显的不同 所以从技术上讲,所有的算术运算符都是超负荷的 确定重载内容的最简单方法是,假设您必须调用
Operators.plus()
,而不是+运算符。当该方法需要重载以处理不同的输入时,操作符也需要重载
因此,例如,当您在字符串连接意义上使用+
时,这将等效于运算符.plus(对象优先,对象优先)
,而整数加法将由运算符.plus(int-first,int-second)
覆盖,依此类推
(然而,作为一个思维实验,如果我们采取“放松”(且不正确)的观点,即所有数字都只是数字,那么我们可以说所有序数类型的按位运算符行为相同,前提是我们将布尔值
视为一位长的数字。)
附言:要记住的唯一一件重要的事情(从实践的角度来看)是
|
和&
带有布尔运算符不会短路,而|
和&
会短路。我个人不会过分担心术语,只要人们理解你的意思。在Java中(作为用户)无论如何都不能重载运算符,因此它没有在可以重载的语言中那么重要。你从哪里读到+
是唯一重载运算符?所有算术运算符都重载,首先…@shekharsuman:不,Java没有用户定义的运算符重载。区别很大。@shekharsuman Java没有可编程运算符重载。但是+
操作符确实超载了。@JonSkeet-I的意思是仅仅超载。抱歉:)boolean
type在java中不是整型,不像C.am那样,我不知道何时调用重载运算符。这是我的第一个问题。顺便说一句,我没有-1。@overexchange我没有说它是。@overexchange这很简单:当实现运算符的代码不同时。想象一下,您必须调用操作符.plus()
,而不是+
操作符。当该方法需要重载以处理不同的输入时,您的运算符也需要重载。实际上,我们需要一整群重载的加上方法,以对所有现有的组合进行建模,或者假设一种行为好像发生了自动装箱,但即使如此,我们仍然有(String,Object)
和(Object,String)
(但不是(对象,对象)
)…