Java面试十大棘手问题之二
我们之前已经谈到了为何 wait,notify 和 notifyAll 属于 Object 类?也给到大家一个回答,那接下来说说第二个问题,为什么 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)让开发工具处理更容易。这是在 Java 中不支持运算符重载的另一个好处。省略运算符重载使语言更容易处理,这反过来又更容易开发处理语言的工具,例如 IDE 或重构工具。Java 中的重构工具远胜于 C++。
大家可以参考对比一下自己将来遇到的时候可以怎么回答哦,有想在Java方面有所提升的也可以搜索千锋Java培训,如果对Java感兴趣的也可以到千锋上海Java培训来试听哦。

猜你喜欢LIKE
相关推荐HOT
更多>>
培训ui一般要多少钱?哪种学习方式更高效
对于熟悉设计专业的人而言,ui设计并不会陌生,从词汇上来解释,ui的培训主要是培养操作者对界面的设计,包括对软件的人际互交以及操作逻辑,不...详情>>
2023-03-21 09:44:48
java培训去哪里学?java培训哪个机构好
现如今,java技术已经成为一种通用的编程语言,应用非常广。因为java比较简单容易用一些,它的功能也特别的强大,因此很多人都开始学习java技术...详情>>
2023-02-28 15:37:27
上海Web前端培训怎么样,为什么学习的人这么多?
Web前端入行门槛低,学习起来相对简单,同时,目前市面上对于Web前端开发人才的需求也不断增加,很多人看好Web前端开发的行业前景,纷纷转行前...详情>>
2022-03-16 15:04:00
上海Web前端培训好不好,前端行业真的饱和了吗?
经常会有一些想要学习Web前端开发的朋友在网上问,现在学习Web前端开发还来得及吗,Web前端行业现在是不是已经饱和了,没有多大的发展前景了?...详情>>
2022-03-14 15:31:00热门推荐
编程代码好学吗?学习这方面内容是否是智商税
沸培训ui一般要多少钱?哪种学习方式更高效
热java培训去哪里学?java培训哪个机构好
热平面设计一般要学多久?完善的学习模式非常关键
新前端开发培训一般几个月?需要赶快开始学习之旅
小白参加前端培训班学费贵吗?
上海it培训大概需要多少钱?一站式服务平台更靠谱
前端开发培训一般多少钱,学员们需要睁大双眼判别
学编程一年大概多少钱,要把钱花在刀刃上
学it大概要多少钱,品质教育受到学员的关注
参加上海Java培训班,这些问题一定要清楚!
上海Web前端培训哪家好,什么样的人才才是企业需要的?
零基础能学Java吗?上海Java培训哪家好?
上海Web前端培训好吗,现在学习前端还有前途吗?