J***A语言的运算符和表达式,j***a语言的运算符和表达式的区别
dfnjsfkhak
45
大家好,今天小编关注到一个比较有意思的话题,就是关于java语言的运算符和表达式的问题,于是小编就整理了1个相关介绍Java语言的运算符和表达式的解答,让我们一起看看吧。
- 为什么Java不支持运算符重载?
许多大能对j***a不支持运算符重载的原因进行了分析。就我个人理解,不管j***a设计者当初出于什么样的考虑,这一决策的一个明显的好处是使得程序易于理解!为什么?
运算符本身具有其缺省的、确定的运算含义,而运算符重载使得运算符的运算功能具有了不确定性,从而使得基于这种不确定性的包含重载运算符的程序代码具有了不确定性!
也就是说,要想理解包含重载运算符的程序代码的确切含义,首先要找到运算符被重载的地方,理解重载后运算符的含义!运算符被重载了吗?在哪里重载的?重载后它是什么意思?带有这些疑问去阅读程序会相当累,还不如直接了当用函数来表达相应功能更显得简单!
另外,允许运算符重载在某种程度上违背了开闭设计原则。运算符的重载和使用不是局部化的,重载可能发生在多处,使用的地方可能会更多。对某一重载代码的修改,其影响范围存在某种程度的不确定性!
总之,运算符重载有其优点,对于追求形式美的人来说具有极大的诱惑力!然而我们大多数人是现实的!j***a不支持运算符重载,我认为更多的是现实的考量!!!
J***a不支持运算符重载,具体为什么,我可能说的不太完美,但J***a就是这么实用,热门,
与C++、C#不同,不支持多重继承,没有指针,没有引用传递,就少了很多功能,下面我讲一下J***a不支持运算符重载的优点,实用性。
一、清晰性。
(图片来源网络,侵删)
清晰性是J***a设计者的目标之一。设计者是希望有一种清晰,真正面向对象的语言。如果有运算符重载的话,肯定会比没有运算符重载设计更加复杂,甚至会减慢编译器的速度。
二、可以有效避免程序错误。
用运算符重载的话,可能会使整个的开发人员处于特别紧张的状态,运算符重载将为同一运算符赋予多种含义,这样会增加很多编程错误,可以说这样会增加整个项目的难度,会让开发人员陷入一种无奈,到最后要去学习,去研究导致最后交付不了。因此没有太大的意义,所以这点好处是有的。
三、让开发处理更容易。
and
可能很多人用过C++,就会发现,其实运算符重载也挺方便,但是在J***A中就不这样用,J***a的目标之一就是清晰性。
J***a不支持运算符重载 = 小白也能学编程
J***a之所以不支持运算符重载,并不是如下原因:
不支持运算符重载的根本原因,是源自James Gosling设计J***a的初衷:那就是要让J***a的学习门槛足够低,这样才能让这个编程语言被更多的人使用,从而拥有最大的市场占有率。
J***a诞生之前, 基本上是C/C++的天下。光C语言的一个指针,就吓退了多少莘莘学子?C++引入更多的动态特性:多态、多重继承、函数重载、函数重写、运算符重载、泛型……这更不知道让多少人望而却步!
正是在那样的大环境下,James Gosling才萌生了“开发一个小白都能上手”的编程语言的念头。
运算符重载的底层逻辑来自函数式编程。它的祖师爷是Lisp,一个“从来被模仿、从未被超越”的神级语言。
可以负责任地讲,如今流行的Python、J***ascript、Typescript、Go、Ruby、Haskell、Scala、Groovy等,在动态高级特性上都是在不断模仿60多年前的Lisp。包括J***a从诞生起就在鼓吹的垃圾回收等优点,全部都是“偷师”Lisp。有兴趣的小伙伴可以自行下载Lisp的发明者——John McCarthy老爷爷1960年发表的GC论文。
函数式语言的核心思想其实是数学。
说得更白话一点:通过数学表达式描述问题,而不是人肉模拟解答过程。问题描述完了,也就解决了——运行时处理细节。
说得更学院派一点:通过无状态的函数加以其他优化特性,将这些函数组件进行拼接。
看到这里,估计有不少人要来拍砖:运算符重载看起来那么复杂,明明可以定义方法或者函数来解决,除了***格,没有实用价值。
到此,以上就是小编对于J***A语言的运算符和表达式的问题就介绍到这了,希望介绍关于J***A语言的运算符和表达式的1点解答对大家有用。
标签: 运算符
重载
JAVA
版权声明:本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。