最新一手Java大厂面试资料!

开课吧开课吧锤锤2021-04-08 16:02

点赞
有用
分享分享

    为何Java不支持操作符重载?

    其他类似的Java面试难题。为何C++支持操作符重载而Java不支持?也许有人会说,Java中的+操作符对于字符串连接已经加载过多了,不要被这些观点所迷惑。

    不同于C++,Java不支持操作符重载。JAVA不能向程序员提供像+,-,*和/这样的标准运算符重载。在您使用过C++的情况下,Java比C++少了很多功能,比如Java不支持多继承,Java没有指针,Java没有地址引用传递。另外一个类似的问题是关于Java通过引用传递的,它主要表现为Java是通过值还是引用传递参数。尽管我不知道这背后的真正原因,但我想下面这句话有一定道理,Java不支持操作符重载。

Java

    一、简明明了。清晰是Java设计人员的一个目标。设计人员不仅要复制语言,而且要一种清晰、真正面向对象的语言。增加操作符重载肯定会使设计更加复杂,而且还会导致编译器变得更加复杂,或者降低JVM的速度,因为它需要做额外的工作才能确定操作符的真正意义,从而减少优化的机会,从而保证操作符在Java中的行为。

    二、避免程序中出现错误。Java不允许用户定义的运算子重载,因为如果运算子重载被允许,那么同一个运算子就会被赋予不同的意义,这就会让开发人员的学习曲线变得陡峭,事情就会变得更复杂。人们注意到,当语言支持操作符重载时,编程错误的误解会增加,从而增加开发和交付的时间。因为Java和JVM已经为大多数开发人员承担了责任,比如在通过垃圾收集器进行内存管理时,由于此功能增加了污染代码并成为编程错误来源的机会,所以没有多大意义。

    三、JVM的复杂性。在JVM看来,对操作符重载的支持使得问题变得更加复杂。以更加直观,更加简洁的方式使用方法重载可以实现相同的功能,所以在Java中不支持操作符重载是有意义的。复杂的JVM可能会导致JVM比相对简单的JVM更慢,并且通过确保运算符行为确实是Java中的,来减少优化代码的机会。

    四、使开发工具更容易使用。在Java中,这是不支持操作符重载的另一个优点。忽略操作符重载之后,就可以方便地对语言进行处理,比如静态分析等,这反过来就可以方便地开发处理该语言的工具,比如IDE或重构工具。与C++相比,Java中的重构工具更强大。

    假如您对大厂的面试题有兴趣,不妨点击下面的图片,免费领取。

Java

    在线搜索Java面试题,你会发现很多都是重复性的,那么精粹的面试题,就是你最需要的。

有用
分享