首页 》答疑解惑 >

Java面试高频难题:会做的都进大厂了~

发表日期:2020年05月12日 文章编辑:IT实战

Java面试高频难题:会做的都进大厂了~

作者 | Yujiaao
来源 | https://segmentfault.com/a/1190000019962661
 
分享一个 Java 面试难题。
为什么 C++ 支持运算符重载而 Java 不支持? 
有人可能会说+运算符在Java中已被重载用于字符串连接,不要被这些论据所欺骗。
与 C++ 不同,Java 不支持运算符重载。Java 不能为程序员提供自由的标准算术运算符重载,例如+,-,*和/等。如果你以前用过 C++,那么 Java 与 C++ 相比少了很多功能,例如Java不支持多重继承,Java中没有指针,Java中没有地址引用传递。   
另一个类似的问题是关于Java通过引用传递,这主要表现为 Java 是通过值还是引用传参。虽然我不知道背后的真正原因,但我认为以下说法有些道理,为什么 Java 不支持运算符重载。
1) 单性和清晰性。清晰性是Java设计者的目标之一。设计者不是只想复制语言,而是希望拥有一种清晰,真正面向对象的语言。添加运算符重载比没有它肯定会使设计更复杂,并且它可能导致更复杂的编译器, 或减慢JVM,因为它需要做额外的工作来识别运算符的实际含义,并减少优化的机会, 以保证Java中运算符的行为。
2) 避免编程错误。Java 不允许用户定义的运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员的学习曲线变得陡峭,事情变得更加混乱。据观察,当语言支持运算符重载时,编程错误会增加,从而增加了开发和交付时间。由于Java和JVM已经承担了大多数开发人员的责任,如在通过提供垃圾收集器进行内存管理时,因为这个功能增加污染代码的机会, 成为编程错误之源, 因此没有多大意义。
3) JVM复杂性。从JVM的角度来看,支持运算符重载使问题变得更加困难。通过更直观,更干净的方式使用方法重载也能实现同样的事情,因此不支持 Java 中的运算符重载是有意义的。与相对简单的JVM相比,复杂的JVM可能导致JVM更慢,并为保证在Java中运算符行为的确定性从而减少了优化代码的机。
4) 4) 让开发工具处理更容易。这是在Java中不支持运算符重载的另一个好处。省略运算符重载后使语言更容易处理,如静态分析等,这反过来又更容易开发处理语言的工具,例如 IDE 或重构工具。Java 中的重构工具远胜于 C++。
没有人能随随便便成功,如果你想进入高薪IT行业,却不知如何入门。建议你选择参加培训,培训领你入门,给你一次最快捷的拿高薪的机会,但你的努力,你真心的想为那个结果去付出,才是最最重要的。

 
相关新闻

济南华育学员:没有华育就没有我们的今天!

济南华育快讯:近日,刚刚就业不久的17-0910Java班学员代表李鑫铭与同学孔杰、孙磊、杨林一起来到济南华育

2018年01月05日

济南华育705网络营销班毕业啦

济南学网络营销课程 就到济南华育IT

2018年01月08日

IT小白?转行?不同基础的人该如何学Java?

IT小白?转行?不同基础的人该如何学Java? 很多初学者会问是如何学习Java的,有没有好的建议?今天给大家来点干货,因此咱们就不说

2020年05月11日

互联网企业都有哪些岗位,工资多少?

互联网企业都有哪些岗位,工资多少? 很多小伙伴想转行互联网,却对互联网行业知之甚少,今天我们就给大家简单介绍一下,方便感兴趣的

2020年05月09日

转行IT行业,女生学编程有前途吗?

转行IT行业,女生学编程有前途吗? 一直以来,IT行业对技术的高要求让人们把这个行业标签为男生专属,从前只有个别女生顶着强大的压力

2020年05月05日

“学力”比学历更有价值,修炼“学力”才是王道!

学力比学历更有价值,修炼学力才是王道! 200年前的交通,和今天的交通大不一样;200年前的通信,和今天的通信大不一样;200年前的娱

2020年04月29日

热点推荐