首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的过载位运算符

Java中的过载位运算符
EN

Stack Overflow用户
提问于 2015-06-12 09:44:03
回答 1查看 349关注 0票数 1

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

但,

运算符& | ^以位运算符的形式处理积分操作数。

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

我的问题是:

  1. 我可以说运营商& ^ |超载了吗?
  2. 我的行话是否正确地将这些运算符称为整数操作数上的位运算符和布尔操作数上的逻辑运算符?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-12 09:50:32

因为我们倾向于把数字看作只是数字,所以我们通常不会识别算术运算符被重载,尽管整数除法与浮点数除法有很大的不同。

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

确定什么是重载的最简单的方法是想象一下,您必须调用Operators.plus()而不是+操作符。当该方法需要重载以处理不同的输入时,您的操作符也需要重载。

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

(然而,作为一种思想实验,如果我们采用“放松”(且不正确)的观点,即所有数字都只是数字,那么我们就可以说,位运算符对于所有序数类型的行为都是相同的,前提是我们将boolean看作一个有点长的数字。)

P.s.:(从实际角度来看)唯一需要记住的是,|&boolean运算符不会短路,而||&&会短路。我个人不会过于担心术语,只要人们理解你的意思。由于您不能在Java中重载操作符(作为用户),所以它不像在您可以使用的语言中那么重要。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30800022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档