Java 最坑爹的 10 大功能点!
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
作为一门面向对象的编程语言,Java凭借其简单易用、功能强大的特点受到了广大编程爱好者的青睐,伴随着开源社区的推波助澜,Java语言更是席卷全球,势不可挡,在世界各地都有Java技术的从业者,它也常年高居编程语言排行榜的首位,足以表明Java的强悍与王者之风。
然而,即便是如此强大的编程语言,也有很多“坑爹”的功能,稍不注意,我们就会掉入坑里,轻则遭到同事的嘲笑和鄙视,重则造成悲惨后果而不得不跑路。
当然,坑爹这个词加上了双引号,因为大部分时候,都是由于我们不够熟练、违反我们的常识才造成了令人不愉快的后果。
今天我们就来梳理一下Java中最“坑爹”、最违反常识的功能点,以排行榜的方式发布,以飨读者。说明一下,本文中的代码基于JDK8来编译实现。
1、switch必须加上break才结束
对于多重分支选择,一系列的if-else-if语句会让代码的可读性变差,建议使用switch语句来代替,然而switch case中的分支判断,必须加上break语句才会中止其它case的执行,比如:
然而,这并不是我们想要的,或者说违反了我们的常识。满足了某种条件,当然就只需要执行这种条件下的逻辑即可,其他的case应该不予理会、直接跳过,象上面这段代码,只需要输出one就行了。
当然,在每个case结尾处加上break就可以达到我们期望的效果。Java 12 骚 switch 居然还能这样玩,推荐看下这篇。
这个功能点稍显“坑爹”,也是初学者常犯的错误,所以它也光荣上榜,排名第10位。
2、逻辑运算符的“短路”现象
使用逻辑运算符时,我们会遇到“短路”的现象:一旦能够确定整个表达式的值,就不会计算余下的部分了,当然,这个功能点其实是非常有用的,但对于初学者来说,可能会感觉比较惊讶,使用不当就会产生“坑爹”后果。比如下面的代码:
就会输出false和1,因为逻辑与&&的前半部分为false,不管后半部分为true还是false,整个表达式都会返回false,所以就不会再计算后面的部分了,如果把false改成true,那么后半部分就会得到执行,num也就变成2了。
它在“坑爹”榜单中位列第9位。
3、数组下标从零开始
Java程序员都清楚,数组的下标是从零开始的,比如,我们要遍历一个数组,可以采用如下的方式:
我们知道,charAt的作用是获取字符串中某个位置的字符,然而,上面的代码并不是输出第一个字符h,而是e,因为数组是从零开始计数的,这个也是比较“坑爹”啊。当然,设计者这么做的原因是考虑到了内存偏移量的因素。
每次在编写这样的代码时,都需要做这样的1到0的映射和转换(熟练了就是下意识的转换),确实也有点“坑爹”,所以它也不能幸免,排在第8位。
4、ArrayList遍历删除时报错
Talk is cheap,先上代码:
当然,这种方法也存在问题,建议使用迭代器的方式来删除元素。ArrayList 增删千万不要乱用…推荐看一下这篇。
对于不太熟练的程序员来说,有时候就会掉入这样的陷阱之中。这是排名第7的情况。关注微信公众号:互联网架构师,在后台回复:2T,可以获取架构师干货。
5、字符转成数字的坑
有时候,我们想把字符直接通过类型转换变成整数,比如像下面这样:
7、Integer类有缓存
这个功能点也是面试的高频热点之一,稍不注意,也有可能被带入沟里,我们看看下面这段代码:
8、空方法体导致死循环
如果循环的方法体为空,则会导致死循环,比如,下面的代码打印出数字1,2,3:
上面的代码既不会输出102,也不会报错,而是输出2,这的确出乎意料,完全不是我们期望的结果,太神奇了,非常的“坑爹”。
所以,它排名第2,稳居榜眼的位置。
10、Java注释能够识别Unicode
先看看代码:
乍一看,代码都被注释掉了,当然不会输出任何东西,然而,它还是输出每个程序员都倍感亲切的Hello World,这是因为,unicode解码发生在代码编译之前,编译器将u样式的代码进行文本转义,即使是注释也是这样,然后u000a被转换成n换行符,所以println代码得以正常执行。
这样的功能着实“坑爹”,极其违反常识,它必须要上榜,必须要荣登状元的位置。
以上就是Java语言中十大“坑爹”的功能点,你是否认同这样的排名?你觉得有哪些功能更应该入选此榜单?欢迎后台留言讨论!
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-06-02
本文作者: 践行精神自由
本文来自:“互联网架构师 微信公众号”,了解相关信息可以关注“互联网架构师”
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
对象存储适合人工智能和机器学习的三个原因
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 如今,各种类型的企业都致力于采用人工智能和机器学习项目,但要发挥其真正的潜力,则需要克服重大的技术障碍。虽然计算基础设施通常是重点,但存储设施也同样重要。以下是对象存储(而不是文件或块存储)适用在加强人工智能和机器学习工作负载的三个主要原因: 1.可扩展性 当有大量不同的数据源可供学习时,采用人工智能和机器学习技术最有效。数据科学家利用这些丰富的数据来训练领域模型。在“大数据的五个V”(数量、类型、速度、准确性和价值)中,前两个(数量和类型)最为重要。简而言之,人工智能和机器学习依赖于大量不同的数据(图像、文本、结构化和半结构化数据)来构建有用的模型,提供准确的结果,并最终提供业务价值。 对象存储是很具扩展性的存储架构,特别适合支持人工智能和机器学习所需的大量数据。对象存储旨在通过水平扩展方法实现无限增长,从而使企业可以通过在需要的位置和时间添加节点来增加部署。由于对象存储使用单个全局名称空间,因此也可以一次在多个地理位置上进行这种扩展。另一方面,文件和块系统通常采用扩展方法。这意味着这...
- 下一篇
商业建筑中的物联网:改善居住者的健康和福祉
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 居住者的健康和福祉已成为当今商业建筑运营的核心支柱之一。由于室内环境直接影响人们的身心健康,因此引入了诸如WELL之类的现代建筑标准,以提供有关如何设计建筑物和室内空间以促进人类健康的准则。在当今急需采取积极措施以保护人们健康的紧急呼吁中,房地产和设施管理领域中具有远见卓识的公司正在商业建筑中推行物联网,以维护居住者的长期安全。 智能建筑技术提高室内环境质量 对于精通技术的建筑业主来说,将智能建筑技术用于居住者的福祉并不是一个新概念。模块化的物联网传感器与远程、低功耗和低成本的无线网络相结合,用于在分散的建筑区域捕捉和传输各种室内参数的数据,如空气质量、温度、湿度和自然采光。传感器数据的独特之处在于,它可以揭示人类无法立即识别的潜在问题,如大气中的高浓度颗粒物和二氧化碳,或不健康的低湿度水平。借助开放式无线物联网架构,可以轻松地将数据集成到现有的建筑物管理系统中,以自动调节暖通空调设备,确保健康舒适的室内环境。 扩展视野:应对迫在眉睫的健康风险 毫无疑问,室内环境监测,尤其是空气质量控制...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果