Java冷知识是指Java里面一些貌似不起眼,却容易出错的地方,最近开发中也遇到一些问题,写下来一起分享。
1、Integer还是int
大家都知道基本类型和装箱类型。先来看这段代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class Item { private Integer id; public Integer getId() { return id; } } public int getInt(Item item) { if (item != null) { return item.getId(); } else { return 0; } }
这里在运行时,12行抛出了空指针异常。也许很多人会纳闷:我明明做了空指针检查了啊?很可惜,这里的空指针不是item.getId()抛出的,而是在return的时候,Java会对Integer对象进行拆箱,但是拆箱的时候,如果对象为null,是会抛空指针异常的!Java拆箱的异常极其具有迷惑性,应当注意。
2、Map的遍历
对于一个Map,我使用map.put(key,null)之后,有没有改变map的内容?答案是有的,虽然map.get(key)仍然会返回null,但是在遍历EntrySet和KeySet的时候都会有内容,map.containsKey(key)也会返回true。所以在构建map的时候,如果确认某一项没有添加的意义,请不要将null值填进去。
3、序列化的陷阱
其实这个不算是冷知识了,应该说还挺重要的。
首先,序列化只会序列化对象不会序列化类,它会在序列化结果中用一部分区域来保存对象的类签名(注意仅仅是签名),如果反序列化的时候,JVM找不到这个类,会无情的抛出ClassNotFoundException。
其次,如果序列化和反序列化时,类的字段发生了变化,也没有太大关系,Java会尝试对能够匹配的字段进行赋值,这点不得不说还是很高级的!当然,如果你改变了字段的类型,比如序列化的字段是个String,你给改成了int,那就会收到InvalidClassException。
总之一句话,Java的序列化是按照签名(当然还有序列化Id来)序列化对象的。
分享到:
相关推荐
这里记录本人学习java时经常记不住或有误区、或易混淆的知识点记录
在Java编程语言中,有多个重要的知识点涉及到类的属性、继承、构造方法、访问修饰符、抽象方法、JNI以及内部类等。以下是这些知识点的详细解释: 1. **final属性**:final关键字用于声明不可变的变量。对于非静态...
在Java技术领域,成为一个大牛并非易事,它需要...通过系统地学习和实践这些知识点,你将逐步建立起坚实的Java技术基础,为成为Java技术大牛打下坚实的基础。在学习过程中,不断实践、解决问题和积累经验是至关重要的。
Java游戏源码集合是一个珍贵的学习资源,包含了十款相对冷门但依然有价值的Java游戏的源代码。这个集合为开发者提供了一次深入理解游戏编程、Java语言应用以及算法设计的绝佳机会。通过研究这些源码,我们可以学到...
史上最全的BAT大厂Android面试题汇集,以及常用的Android开发的一些技能点,冷门知识点汇总,开发中遇到的坑汇总等干货。 LeetCode 上面主要收集了各大 IT 公司的笔试面试题,该项目为 LeetCode Java 语言的题解集合 ...
这份文档包含了100道Java面试题目,旨在帮助准备Java面试的求职者更好地理解Java基础知识以及一些较为冷门或不常用的知识点,从而提高面试成功率。 ### 2. 部分内容解析 #### 2.1 Java中是否可以使用“goto”...
这个库主要是一些常用的Android开发的一些技能点汇集,有填坑总结,有面试总结,有冷门知识点总结等,总之Android开发有关的知识点都会涵盖到。 Android一些太多的东西我们开发中经常会遇到,于是我就把常用知识点...
BAT科技公司前后端面试宝典涵盖了阿里面的基本问题、技术细节问题、性能优化问题、线程池问题、TCP冷门知识、阿里技术面试准备、面试官经验分享等多方面的知识点。以下是根据给定的文件信息所生成的知识点: 一、...
标题中的"BaiduRe.rar_BaiduRe_图推荐_推荐系统_推荐系统java_热传导推荐"暗示这是一个关于百度(Baidu)推荐系统的项目,可能包含Java实现的源代码,特别是涉及到“热传导推荐”这一技术。 一、推荐系统基础知识 ...
毕业设计选题系统---毕业生题目管理子系统是一个基于Java编程语言和Access数据库技术构建的应用程序...对于学习和研究计算机科学的学生来说,这是一个很好的实践项目,涵盖了Web开发和数据库管理等多个方面的重要知识。
总的来说,"OPT_FIFO_LFU_LRU_置换页算法java可视化界面"是一个实用的教学工具,它不仅提供了理论知识,还通过实践让学习者能够直观地感受和分析不同页面替换算法的优劣,对于学习操作系统内存管理和优化有着重要的...
它的强大之处在于支持众多编码格式,包括常见的H.264、AAC等,以及一些较为冷门的格式,使得多媒体内容能够在各种设备上流畅播放。 在Android app的开发中,集成FFmpeg并非易事,因为它主要针对命令行环境设计,而...
要开始学习SAP Basis,首先需要具备一些基础的技术知识和经验。 1. **多种操作系统管理**: - **UNIX/NT**:UNIX是最常见的操作系统之一,尤其是AIX、HP-UX和Sun Solaris在SAP应用中占主导地位。AIX通过SMIT提供了...
虽然在某些工作负载下优于LRU,但在某些情况下可能导致频繁访问的冷门页面长时间留在内存,从而影响性能。 4. **OPT(最佳页面替换)**:理论上最优的算法,知道未来所有页面访问序列,因此始终选择未来最远不会...
对于UST这样的非主流语言来说,虽然可能不会像Python或Java那样有大量的课程,但仍有可能找到一些由专业人士录制的教程或课程。通过这些课程,学习者可以系统地了解UST语言的基本概念和使用技巧。 **3. 技术社区** ...
以下是一些面试中可能会遇到的知识点: 1. **操作系统远程访问**: - Windows系统主要使用自带的远程桌面连接工具(RDP)进行远程访问。 - Linux系统则通常使用SSH(Secure Shell)工具,如PUTTY或securecrt。 2...
档案学专业作为一门看似冷门但实则有着广阔就业前景的专业,其核心在于培养具备系统档案学知识和现代信息技术技能的专业人才。随着信息化时代的到来,档案管理不再局限于传统的纸质文档,而是走向电子化、网络化的...
档案学专业,虽然在名称上显得较为冷门,但在实际就业中却有着良好的前景。由于开设此类专业的高校不多,毕业生数量有限,因此竞争相对较小,就业率通常较高。以中山大学资讯管理系和武汉大学档案学为例,它们的就业...
- **实际应用场景**:本书包含了一些具体的案例研究,通过这些案例,读者可以了解 ColdFusion 在现实世界中的应用。 - **项目规划与实施**:介绍了如何规划和实施一个完整的项目,从需求分析到最终部署。 #### 结论...