1、Java注释能够识别Unicode

关于问题还引申出一个概念“Unicode 逃逸”,并且为什么会有这种机制,有什么作用,我之前写过一篇文章,这里面已经做了详细的介绍,请大家点击并仔细阅读这篇文章:

2、Integer类型的数值比较

大家来看看下面的这段代码执行的结果是什么?

public static void main(String[] args) {Integer a = 127;Integer b = 127;Integer c = 128;Integer d = 128;System.out.println(a == b);System.out.println(c == d);}

它的执行结果是:

如果你答对了,那么恭喜你,你已经知道他的原理了,可以跳着看下面的第三个坑。

对于比较Integer类型的数据,相信很多人会用“==”去比较,而且很多人感觉输出的结果是两个true。实际上这段代码的输出结果是true和false;

原因如下:

它的内部维护了一个缓存池,如果超出了这个缓存池(-128到127),它就会new一个新的Integer对象。但是数字只要在这个缓存池范围内,就不会new一个新对象,它会直接取出对象而不是创建新的对象,所以他们是相等的,但是如果超过了这个范围,那么它就创建一个新的对象(-2147483648到-128和128到2147483647),所以返回的会是false结果。

因此我们比较两个Integer是相等的时候应该用equals()方法或者用a.intValue()==b.intValue()这两个方法来比较

3、空指针异常

在某些场景下,我们经常会使用对象就get或者set值,如果这个对象为空的时候,也就是null.get()或者null.set()都会报空指针异常

解决方法:

我们每次都需要判断这个对象是否为空,不要嫌麻烦,要保证代码的健壮性。

4、空方法体导致死循环

如果循环的方法体是空的,那么就会导致该循环成为一个死的循环,比如,下图所示的代码会打印出1,2,3,4,如图所示:

如果你不小心在while后面多打了一个分号,如下:

大家仔细看看这段代码将会输出什么结果?

你们不妨运行下试试,已经陷入了死循环,当然for循环也存在这样的情况。这是非常坑的事情。

5、split()方法参数特殊字符需要转译的问题

String[] arr = amtStr.split("\\.");

String[] arr = amtStr.split("\\|");

6、ArrayList遍历删除时报错

大家觉得下面的这段代码有问题吗》

public static void main(String[] args){List list = new ArrayList();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");int length = list.size();for (int i = 0; i < length; i++) {if (list.get(i).equals("2")) {list.remove(i);}}}

这段代码是从ArrayList中删除元素,上面的代码会抛出IndexOutOfBoundsException异常,原因是ArrayList在删除元素后会重新计算数量。

那么怎么样解决这个问题呢,我们只需要把list.size()放在for循环中就可以了,上面的代码我们改造下就没有问题了,如下所示:

public static void main(String[] args){List list = new ArrayList();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");for (int i = 0; i < list.size(); i++) {if (list.get(i).equals("bc")) {list.remove(i);}}}

像这样的坑还有很多,大家日常开发中还遇到过哪些坑呢,不妨说出来一起交流下!

你点的每个“在看”,我都当成了喜欢

java里注释为什么报错_这些年我们在java中遇到过的坑,你遇到过几个相关推荐

  1. java通讯链路异常报错_【Java】有了链路日志增强,排查Bug小意思啦!

    在工作中,相信大家最怕的一件事就是听到有人在工作群艾特你:某某功能报错啦... 然后你就得屁颠屁颠的去服务器看日志,日志量少还好点,多的话找起来太麻烦了.不太容易直接定位到关键地方. 东找找西找找,好 ...

  2. 【Java】Kryo运行报错:Exception in thread “main“ java.lang.IllegalArgumentException:Class is not registered

    练习代码如下: import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com ...

  3. java list转json报错_一个fastjson转换JSON字符串的报错排查

    今天给一个java类加了几个字段,没想到转为json字符串的时候报错了,定位了一下原因,觉得这种情况遇到的应该不多,又想起来很久没写博客了,于是就把遇到的问题以及定位过程记下来,省了以后遇到的人再花时 ...

  4. webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!

    点击上方Python知识圈,设为星标 回复100获取100题PDF 阅读文本大概需要 6 分钟 近期精彩文章:Python100例(附PDF下载地址) 作者:pk哥 原创公众号:Python知识圈 刚 ...

  5. java项目导入包报错_转!java web项目 build path 导入jar包,tomcat启动报错 找不到该类...

    在eclipse集成tomcat开发java web项目时,引入的外部jar包,编译通过,但启动tomcat运行web时提示找不到jar包内的类,需要作如下配置,将jar包在部署到集成的tomcat环 ...

  6. mysql 2003报错_为什么不建议在 MySQL 中使用 UTF-8?

    正文 记得去年我在往MySQL存入emoji表情 时,一直出错,无法导入.后来找到办法 -- 通过把 utf8 改成 utf8mb4 就可以了,并没有深究. 一年后,我看到一篇文章讲到emoji文字占 ...

  7. java里class有什么用_安装JDK时的java和javac命令有什么用?

    相信大家都装过JDK吧,在装JDK时我们会在命令提示符窗口中通过java和javac两个命令来检测我们的环境变量是否配置正确,那么你知道java和javac两个命令有什么用吗? 在了解这两个命令的作用 ...

  8. onkeypress属性添加报错_亚马逊运营过程中listing常见报错及应对策略汇总

    亚马逊运营过程中listing常见报错及应对策略汇总 做亚马逊的小哥哥小姐姐们还在为上传产品中的报错提示而抓狂吗?福利来了,总结了17个常见报错,供大家查阅 1.SKU XXXXX, Missing ...

  9. python执行js文件报错_使用PyV8在Python爬虫中执行js代码

    前言 可能很多人会觉得这是一个奇葩的需求,爬虫去好好的爬数据不就行了,解析js干嘛?吃饱了撑的? 搜索一下互联网上关于这个问题还真不少,但是大多数童鞋是因为自己的js基础太烂,要么是HTML基础烂,要 ...

最新文章

  1. Linux驱动之Input子系统要点分析
  2. iNeuOS工业互联网,增加一批PLC、核工业、数字模块、传感器等设备驱动
  3. 腾讯Android自动化测试实战3.3.3 修改Robotium以支持X5WebView
  4. Drools 7.x Rate算法
  5. mysql路径猜解_猜解数据库(MYSQL)信息
  6. ajax实现环境,基于jQuery实现的Ajax(Django环境)
  7. 证书(3)如何在程序中使用数字证书
  8. 什么是全兼容?DVD主流格式全面解析
  9. ShaderLab学习总结
  10. java object类的方法,JAVA中Object类中 有几个方法?
  11. P1024 一道naive的二分
  12. JAVA ajax搜索框_JAVAEE AJAX实现搜素框关键字提示语功能
  13. ftp、sftp简介
  14. hscan扫描mysql代码_HScan 扫描器
  15. r语言Isfit_应用统计学与R语言实现学习笔记(七)——拟合优度检验
  16. android gms集成方法
  17. C语言 打印数组为什么要用循环
  18. 给力大辞典v3.0 免费安装版【包含18部字典词典】
  19. HTML和CSS的知识点
  20. NCB:神经元线粒体应激记忆可通过mtDNA水平升高跨代遗传

热门文章

  1. mega_[MEGA DEAL] Ultimate JavaScript电子书和课程包(96%折扣)
  2. camel_Apache Camel 2.14中的更多指标
  3. python控制结构(二)_Python程序控制结构---2
  4. mysql 全局变量_详细讲解mysql全局变量与局部变量
  5. MySQL 8.0 可以操作 JSON 了,牛!
  6. Spring越来越强,而我们越来越快餐!离开了Spring,居然API都写不出来了!
  7. 情人节微信红包数据公布,你离海王与海后有多远...
  8. 一次搞定:分布式缓存 Redis 集群搭建!
  9. 一文告诉你,Intellij IDEA神器隐藏的11种实用小技巧!
  10. 赛森机器人_对比评测3款最贵的扫地机器人,戴森性能太强了