广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 计算机学校 > 惠州计算机学校 > 正文

Java十大面试难题(二)_惠州计算机Java培训

作者:邓华发布时间:2021-06-24分类:惠州计算机学校浏览:899


导读:我们之前已经谈到了为何 wait,notify 和 notifyAll 属于 Object 类?也给到大家一个回答,那接下来说说第二个问题,为什么 C++ 支持运算符重载而 Java 不支持?有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。下面一起来看看惠州北大青鸟老师是怎么回答的。

      我们之前已经谈到了为何 wait,notify 和 notifyAll 属于 Object 类?也给到大家一个回答,那接下来说说第二个问题,为什么 C++ 支持运算符重载而 Java 不支持?有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。下面一起来看看惠州北大青鸟老师是怎么回答的。

      与 C++ 不同,Java 不支持运算符重载。Java 不能为程序员提供自由的标准算术运算符重载,例如+, - ,*和/等。如果你以前用过 C++,那么 Java 与 C++ 相比少了很多功能,例如 Java 不支持多重继承,Java中没有指针,Java中没有引用传递。另一个类似的问题是关于 Java 通过引用传递,这主要表现为 Java 是通过值还是引用传参。虽然我不知道背后的真正原因,但我认为以下说法有些道理,为什么 Java 不支持运算符重载。

      一、简单性和清晰性。清晰性是Java设计者的目标之一。设计者不是只想复制语言,而是希望拥有一种清晰,真正面向对象的语言。添加运算符重载比没有它肯定会使设计更复杂,并且它可能导致更复杂的编译器, 或减慢 JVM,因为它需要做额外的工作来识别运算符的实际含义,并减少优化的机会, 以保证 Java 中运算符的行为。

      二、避免编程错误。Java 不允许用户定义的运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员的学习曲线变得陡峭,事情变得更加混乱。据观察,当语言支持运算符重载时,编程错误会增加,从而增加了开发和交付时间。由于 Java 和 JVM 已经承担了大多数开发人员的责任,如在通过提供垃圾收集器进行内存管理时,因为这个功能增加污染代码的机会, 成为编程错误之源, 因此没有多大意义。

      三、JVM复杂性。从JVM的角度来看,支持运算符重载使问题变得更加困难。通过更直观,更干净的方式使用方法重载也能实现同样的事情,因此不支持 Java 中的运算符重载是有意义的。与相对简单的 JVM 相比,复杂的 JVM 可能导致 JVM 更慢,并为保证在 Java 中运算符行为的确定性从而减少了优化代码的机会。

      四、让开发工具处理更容易。这是在 Java 中不支持运算符重载的另一个好处。省略运算符重载使语言更容易处理,这反过来又更容易开发处理语言的工具,例如 IDE 或重构工具。Java 中的重构工具远胜于 C++。

      相信通过上面老师的解答,大家应该知道答案是什么了吧!想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区详细了解。

Java17.jpg

Java

标签:惠州软件开发培训惠州Java软件开发培训学校惠州Java软件开发基础惠州计算机Java软件开发惠州IT培训惠州Java软件开发知识惠州软件开发知识惠州计算机JAVA培训惠州java软件开发学校Java软件开发


惠州计算机学校排行
标签列表
网站分类
文章归档
最近发表