栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

+运算符在Java中如何与数字和字符串不同?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

+运算符在Java中如何与数字和字符串不同?

Java语言会重载某些运算符吗?

是! 如您所知,运算符

+
可以表示两种不同的含义,即字符串串联或数字加法。 根据定义 ,这是一个运算符重载。

以下是 所有 Java运算符的列表:

[JLS

3.12运算符](http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.12)

以下37个标记是 运算符 ,由ASCII字符组成:

  =     >     <     !     ~     ?      :  ==    <=    >=    !=    &&    ||     ++     --  +     -     *     /     &     |      ^      %     <<     >>    >>>  +=    -=    *=    /=    &=    |=     ^=     %=    <<=    >>=   >>>=

其中一些运算符超载。这里有些例子:

System.out.println(   3 + 4 + "X"     ); // prints "7X"System.out.println(   3 + (4 + "X")   ); // prints "34X"System.out.println(   "X" + 3 + 4     ); // prints "X34"System.out.println(   "X" + (3 + 4)   ); // prints "X7"System.out.println(0 == 0);     // prints "true"System.out.println(new Integer(0) == new Integer(0)); // prints "false"System.out.println(true & (1 & 2) == 12); // prints "false"

我们可以重载Java语言中定义的运算符吗?

绝对不! 所有Java运算符的含义均与语言规范所指定的 完全相同 。没有“额外语言”语义:Java运算符 _ 永远_
不能执行该语言未指定的操作。

也就是说, 除非更改语言否则 以下是保证的事实:

  • someString + whatever
    _ 始终_ 是字符串连接
  • referenceType == anotherReferenceType
    是 _ ALWAYS_ 参考平等
  • 不时髦之类的东西
    3 * "a lady"
    或者
    "my heart" / 2
    甚至
    10**3 ~= 999

但是,如上面的代码片段所示,即使操作员超载的当前状态仍然会造成很大的混乱,尤其是对于初学者而言。通过不允许语言外的重载,至少可以限制这种混乱:一旦程序员了解了Java语言中
所有 运算符在各种重载情况下的功能,它们在 所有 Java代码中的确切语义就变得清晰而精确。

操作员重载可能会造成混乱。有人认为它已经足够“糟糕”了。为了允许用户重载Java运算符以执行语言规范之外的事情,只会导致更加混乱。

这是 Java Puzzlers 的摘录 ,《 Puzzle 30:Looper之子》

语言设计者的课程与[其他两个难题]相同。操作员重载可能会造成混淆。也许

+
不应该为字符串连接重载运算符。提供一个字符串连接运算符可能很值得,但不必如此
+


您是否需要C ++支持Java中的运算符重载?

不! 这有什么用它做 的一切
。Java编译器所需要做的就是根据语言的语法规则解析程序源代码,并为每个运算符确定操作数的类型。此信息足以推断出运算符的含义,然后根据语言指定采取相应的措施。


附录

JLS参考

  • 15.18加法运算符
    • 15.18.1字符串连接运算符+
    • 15.18.2数值类型的加法运算符(+和-)
  • 15.21平等算子
    • 15.21.1数值相等运算符==和!=
    • 15.21.2布尔等式运算符==和!=
    • 15.21.3参考相等运算符==和!=
  • 15.22按位和逻辑运算符
    • 15.22.1整数按位运算符&,^和|
    • 15.22.2布尔逻辑运算符&,^和|


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号