- 博客(14)
- 收藏
- 关注
原创 自动拆箱导致的空指针:包装类的 “甜蜜陷阱”,藏在代码里的 “隐形炸弹”
摘要: Java自动拆箱特性(如Integer转int)虽简化代码,但隐藏NullPointerException(NPE)风险。本文通过"空礼盒"比喻解析问题:当包装类(如Integer为null)被自动拆箱时,相当于试图从空盒取物,触发NPE。常见场景包括:数据库查询、集合操作、方法参数传递等。解决方案包括:1) 显式判空(if (amount != null));2) 封装安全拆箱工具类;3) 数据库字段设默认值;4) 使用Optional类。
2025-09-18 15:16:38
467
原创 Java BigDecimal 精度 “失真” 陷阱:别让你的金额计算栽在这三个错误上
本文深入剖析Java中BigDecimal的三个致命使用误区:1)错误使用==比较对象地址而非数值,应改用compareTo()方法;2)用double构造导致精度失真,应优先使用String构造方法;3)循环内频繁创建对象引发性能问题,建议预缓存对象或批量转换。文章通过真实金融场景案例,展示了这些错误可能造成的严重后果,并给出具体解决方案和优化建议,包括强制指定舍入模式、封装工具类等最佳实践。正确使用BigDecimal才能确保金额计算的精确性,同时兼顾系统性能。
2025-09-18 15:00:35
181
1
原创 为啥 int 加着加着变负数了?用 “装水杯子” 讲透!
本文通过生活化比喻解析Java中int类型溢出的原理。int类型如同一个容量有限的杯子(最大值约21亿),当数值超过上限继续增加时,会像水溢出杯子一样变成负数(最小值约-21亿),导致循环终止。文章用时钟补码类比计算机处理负数的机制,并提出三种避坑方案:1)改用更大容量的long类型;2)加法前检查是否溢出;3)处理金融数据时使用BigDecimal。核心要义是理解int的存储规则(32位二进制),掌握"溢出即翻转"的特性,就能避免因数值越界导致的程序异常。。
2025-09-17 17:40:39
147
原创 揭秘 Java String 的“特殊体质”:用生活例子看懂字符串的那些事儿
本文深入解析Java中String类型的特殊机制,重点探讨字符串常量池与堆内存的存储差异、不可变性特征及intern()方法的陷阱。通过"共享公寓"和"私人别墅"的生动比喻,揭示==与equals()的区别本质。特别指出intern()滥用会导致内存溢出、性能损耗等三大实际项目问题,建议仅对高频重复字符串使用,日常场景推荐equals()或自定义HashMap缓存。最后提出三条黄金法则:优先字面量创建、始终用equals()比较、严格控制intern()使用范围。
2025-09-17 16:54:45
172
原创 关于对Java中ArrayList的运用与理解
ArrayList是Java中的一个动态数组类,它实现了List接口,可以存储任意类型的对象,并且大小可以动态地调整。
2024-10-09 16:41:31
1635
原创 关于String、StringBuffer、StringBuilder三者的区别
关于String、StringBuffer、StringBuilder三者的区别。
2024-09-26 23:55:37
348
原创 Java为什么要设计基本数据类型的封装类
设计封装类的主要目的是为了将基本数据类型转换为对象,因为Java本身是一门面向对象的语言,对象是Java的基础操作单元,我们时时刻刻都在创建、使用对象,很多时候传递数据也需要对象类型,比如ArrayList、HashMap这些集合只能存储对象类型,所以设计他们的封装类是为了方便我们在面向对象编程中使用这些数据类型。此外封装类还提供了一些额外的功能,如方法和属性,使得对基本数据类型的操作更加灵活和方便。
2024-09-26 23:41:55
406
原创 关于Java中迭代器(Iterator)的运用及增强型ListIterator的用法
Java迭代器(Iterator)是 Java 集合框架中的一种机制,是一种用于遍历集合(如列表、集合和映射等)的接口。
2024-09-25 16:15:41
489
原创 Java基本数据类型及类型转换概述
Java中有8种基本数据类型,我将其细分为4大类,第一类是整数类型:包括btye(1字节)、short(2字节)、int(4字节)和long(8字节),分别用于表示不同范围的整数值。第二类是浮点类型:包括float(4字节)和double(8字节),用于表示带有小数点的数值,double提供更高的精度。第三类是字符类型:char(2字节),用于表示单个字符,采用Unicode编码。第四类是布尔类型:boolean,用于表示逻辑值,只能取true或false。
2024-09-25 15:43:00
507
原创 了解软件的C/S架构和B/S架构模式
介绍了B/S(浏览器/服务器)和C/S(客户端/服务器)两种模式。B/S模式只需浏览器即可访问,而C/S模式需要客户端软件。
2024-09-25 14:22:52
377
原创 理解Web三层架构之MVC模式
MVC架构是目前WEB项目主要的项目架构模式,是一种非常优秀的三层架构模式。这三层架构分别指的是视图层View、控制层Controller和模型层Model。
2024-09-24 20:25:21
851
原创 表单提交中的 GET 方法与 POST 方法的区别及使用策略
在 Web 开发中,HTTP 请求方法是关键的概念。GET 方法用于数据获取,数据显示在 URL 中,可被缓存。POST 方法用于数据提交,数据不显示在 URL 中,不可被缓存。GET 是幂等的,多次请求结果一致;POST 不幂等,多次提交可能产生不同结果。区别包括数据传输方式、大小限制、安全性、缓存机制和幂等性。使用策略:对大数据使用 POST,敏感信息用 POST 确保安全,GET 获取静态资源可被缓存,POST 适用于提交数据和修改服务器状态。GET 用于获取资源,POST 用于提交数据和修改状态。
2024-09-24 16:31:33
715
原创 了解Session与Cookie的基本概念并简述他们的区别
Session和Cookie是用于跟踪用户会话的技术,但它们在存储位置、使用方式、安全性等方面存在显著差异。Cookie存储在浏览器中,可以设置过期时间,而Session存储在服务器端,关闭浏览器后自动失效。Session相对于Cookie更安全,但仍然存在安全风险。Session可以存储任意类型的数据,而Cookie有大小限制。
2024-09-24 10:04:20
1158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅