JDK的小Bug你了解么?
用了这么长时间的JDK了,有没有老铁发现JDK的bug呢?从最早版本的JDK1.2到现在普及开的JDK1.8以来,JAVA经历了这么多年的风风雨雨,依然坚持在一线上,是不是感觉很神奇,但是,有没有多少人去主动的去看JDK的源码?还有你写好的代码编译出来的class类,有多少兄弟去看这里面的内容呢?
之前公司老大让我加了一点功能,然后编译成class类,我发现里面的代码和我写的竟然不一样,人家那排版做的,两个字“完美”。于是突发奇想,看看JDK有没有什么BUG来让我们娱乐一下,于是就写下了这么一篇文章来记录自己的心得体会!
兴趣来了,这就有继续的欲望了,我就开始查资料并且自己手动做了测试下面我们就来汇总一下这些存在在我们开发中的一些些小小的BUG吧。
JDK的Bug1--数组切割
字符串的分割,大家都用过吧,split这个方法大家应该都熟悉的,但是有没有人去试过这个split去通过点来进行切割的时候会出现什么问题呢?
我们做个测试具体代码图如下:
在我们的印象中打印的结果肯定是3,但是实际情况和我们想的却完全的不一样,
打印结果却是0,但是相同的情况下我们是用其他的符号去进行切割呢?
这次打印结果却是和我们记忆中的结果完全相符了。
打印结果却是三,这是JDK的一个bug,我也不知道他为什么对点是这么的独特,难道是传统的偏爱?
所以在此得提醒做开发的各位小伙伴了,我们在使用字符串的split的时候,尽量的不要去使用点,也就是“.”,否则你会发现有时候写了半天的代码,你自己竟然都不知道错误竟然是因为JDK的一个小的Bug所引起来的,那时候估计你想把高斯林弄死的心都有。当然了,我是使用的现在用的最多的JDK1.8,如果说JDK1.8之后的版本,对这个进行修复的话,各位大哥能给我提个醒也成,感谢!
JDK的Bug2--三元运算符
基本数据类型的三元运算符是可以赋值为Null的,编辑器是不会给我们报错的,但是当程序运行的时候就会出现错误了,我们来看一下代码展示
在我们编辑代码的时候是一点不出错,但是当我们条件成立的时候就会有这种错误。
其实这个错误很容易理解,为什么呢?三元运算符,哪有这么搞得,很少会出现这种不符合常理的错误,这只能说写代码的兄弟思路很开阔,但是也不排除会有这种情况的出现。所以得长点心,不能瞎搞不是?
JDK中不算Bug的Bug--ArrayList可通过构造函数传入非指定泛型的List并在get时出错
为什么标题会写不算Bug的Bug呢?因为这个比上面的还离谱。这是网上的网友发现的。
我们可以先看看代码展示
JSONArray arr = new JSONArray(); //com.alibaba.fastjson.JSONArrayarr.add("s");List<Long> list = new ArrayList<>(arr);list.get(0); //Exception cannot cast String to Long
在看到这段代码的第一时间,我就想弄死这个写代码的兄弟,你前面的泛型和后边的传入的非指定的这种,好像没有人会这么写吧,不过后来想了一下,也不能弄死人家不是,这代码确实不报错呀!想来想去,还是觉得兄弟你有理,这个确实属于一个Bug,但是这是写代码的人不怎么会遇到的错误问题。所以我把它放到了第三个。
总结
总结起来其实蛮简单的,JDK我们用了这么多年,毕竟也算是稳定的很,作为一个开发者,要去尝试一下这些好玩的东西,说不定什么时候就能自己模仿出一个JDK来也说不定不是,所以Bug很多时候都是自己写出来的,作为一个合格的开发者要把自己的代码写的简单,逻辑严谨,少出一些笑话,实现功能就可以了。
希望各位干程序员的老铁们,继续一直坚持下去。
Java 极客技术公众号,是由一群热爱 Java 开发的技术人组建成立,专注分享原创、高质量的 Java 文章。如果您觉得我们的文章还不错,请帮忙赞赏、在看、转发支持,鼓励我们分享出更好的文章。
关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料。
JDK的小Bug你了解么?的更多相关文章
- JDK的一个关于stack的小bug
在一个项目中,使用了一个java.util.Stack,总所周知,栈是先入后出的,那么遍历其中元素的时候,也应该按照这个顺序遍历才对,但是实际情况确不是,以下是测试代码. Stack stack = ...
- Chrome出了个小bug:论如何在Chrome下劫持原生只读对象
Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...
- 解决JqueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug
前些日子不是在做 使用Jquery-UI实现一次拖拽多个选中的元素操作嘛,在持续完善这个组件时遇到了一个关于拖放排序的bug.今天就着图片和代码重现一下,也顺便告诉大家如何解决这个问题. 首先先上图描 ...
- 淘宝WAP版小BUG分析
前几天发现的一个淘宝WAP版的小BUG,就是用桌面版chrome看的时候产品评价中的图片显示不出来,都是图裂了. 这是什么原因呢?图片为什么会显示不出来呢?淘宝的技术人员.测试人员不可能没发现啊.开启 ...
- 关于一个小bug的修正
python初学者,非常喜欢虫师的文章. 练习时发现一个小bug,http://www.cnblogs.com/fnng/p/3782515.html 验证邮箱格式一题中,第三个x不允许有数字,但是测 ...
- 用 parseInt()解决的 小 bug
在做轮播模块的时候遇到问题是:你在 连续指示小按钮 时候再去 只有 点击 下一张按钮,出现bug: 指示小按钮的 className 当前显示的 calssName 为 undefined ! // ...
- iOS开发之使用UICollectionView实现美团App的分类功能【偶现大众点评App的一个小bug】
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- Flex Validator的小BUG
Flex中对同一控件如TextInput进行多种格式校验的情况下,如不注意,可能导致错误信息不显示的BUG,比如 <fx:Array id="validators"> ...
- Flutter实战视频-移动电商-34.列表页_小BUG的修复
34.列表页_小BUG的修复 当高粱酒的子类没有数据返回的时候就会报错. 解决接口空数据报错的问题 没有数据的时候,给用户一个友好的提示, 我们没有数据的时候还要告诉用户,提示一下他没有数据,在我们的 ...
随机推荐
- django--调用百度AI接口实现人脸注册登录
面部识别----考勤打卡.注册登录.面部支付等等...感觉很高大上,又很方便,下面用python中的框架--django完成一个注册登录的功能,调用百度AI的接口,面部识别在网上也有好多教程,可以自己 ...
- HTML连载44-标准排版、浮动排版
一.什么网页的布局方式? 网页的布局方式其实就是指浏览器是如何对网页的元素进行排版的 二.标准流排版方式(又称为文档流.普通流) 1.含义 其实浏览器默认的排版方式就是标准流排版方式 2.在CSS中将 ...
- SpringBoot系列之配置文件加载位置
SpringBoot系列之配置文件加载位置 SpringBoot启动会自动扫描如下位置的application.properties或者application.yml文件作为Springboot的默认 ...
- pytest框架之allure报告生成
一.关于安装 allure是跟pytest一起集成使用的,所以需要同时安装pytest以及allure-pytest插件: pip install pytest pip install allure- ...
- VSCode中代码在浏览器中打开及实时刷新
实时刷新方法一: 在项目目录下运行命令: browser-sync start --server --files "**/*.css,**/*.html,**/*.js" 实施刷新 ...
- Leakcanary原理浅析
LeakCanary是Android内存泄漏的框架,作为一个"面试常见问题",它一定有值得学习的地方,今天我们就讲一下它.作为一名开发,我觉得给人讲框架或者库的原理,最好先把大概思 ...
- JAVA 设置模块间的依赖关系
项目目录概况 Demo01项目 Test01.java package com.sam.demo01; public class Test01 { public void ShowTest01() { ...
- Dynamics 365利用HTML页面创建实体记录并同步上传附件
我是微软Dynamcis 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Dynamics 365 登录报错:MSIS7042
微软动态CRM专家罗勇 ,回复329或者20190504可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 今天访问我的CRM环境报错,AD FS登录页面输入用户名和密码登 ...
- Python的lambda表达式、filter、map、reduce等函数的用法
lambda是表达式,用于创建匿名函数,可以和filter.map.reduce配合使用.本文环境Python3.7. 一.lambda表达式 lambda 只包含一个语句,用于创建匿名函数. 语法: ...