首页 > 编程语言 >Java 21中的两个值得关注的Bug修复

Java 21中的两个值得关注的Bug修复

时间:2023-12-05 10:59:49浏览次数:30  
标签:Java 21 value remove key 20 Bug IdentityHashMap

在Java 21中,除了推出很多新特性之外,一些Bug修复,也需要注意一下。因为这些改变可能在升级的时候,造成影响。

Double.toString()Float.toString()的精度问题修复

比如:对于Double.String(1e23)

  • 在Java 19后,输出内容为:1.0E23
  • 在Java 18中,输出内容为:9.999999999999999E22

欢迎关注,持续更新的Java新特性专栏

IdentityHashMapremove(key, value)replace(key, value, newValue)的错误处理

IdentityHashMap是Java中自带的一个集合,是一个比较特殊的Map实现。它使用的是恒等比较(而不是equals方法)来判断两个键是否相等。

这意味着,对于同一个对象的不同引用,IdentityHashMap会将它们视为不同的键,而其他Map实现类则会将它们视为相同的键。

在Java 20之前(不含Java 20)IdentityHashMap中的remove(key, value)replace(key, value, newValue)方法,错误地将值参数与映射中的值进行了equals比较,这使得remove(key, value)replace(key, value, newValue)方法执行结果不如预期。

如下例子所示,Java 20之前是不对的,但Java 20之后可以正确实现了。

var users = new IdentityHashMap<String, User>();
String key = "abc";
users.put(key, new User("Jane Doe"));
var removed = users.remove(key, new User("Jane Doe"));
assert !removed;

如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

标签:Java,21,value,remove,key,20,Bug,IdentityHashMap
From: https://www.cnblogs.com/didispace/p/17876700.html

相关文章

  • AES java加密与MySql加密算法一致
    1.背景数据库加密与java程序加密算法保持一致,统一采用AES加密算法。2.java代码加密1packagecom.pacific.permission.test;23importjavax.crypto.Cipher;4importjavax.crypto.spec.SecretKeySpec;5importjava.util.Base64;67/**8*@authorluzhi......
  • java-图片验证码
    前言:  在登录时校验验证码登录<!--导入hutool工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency><!--IdWorker生成所需包-->&l......
  • JavaScript(JS) 判断没有属性的空对象{}的四种方法
    JavaScript(JS)中对象没有属性初始化时,可能使用{}进行初始化,如此我们判断这样的没有属性的空对象就不是很方便,本文主要介绍JavaScript(JS)中判断没有属性的空对象{}的五种方法,以及相关的示例代码。1、通过JSON.stringify()判断可以使用JSON.stringify()将Javascript对象转......
  • Java学习之路(十三)
    Java学习之路(十三)1、Collection集合1.1、数组和集合的区别【理解】相同点都是容器,可以存储多个数据不同点数组的长度是不可变的,集合的长度是可变的数组可以存基本数据类型和引用数据类型集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类1.......
  • 小傅哥带着你做 Java SDK 组件
    作者:小傅哥博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!......
  • Java运算符
    前言星期一,怎么突然学起来了运算符?是不是有点奇怪,当然不是突然想起来学的,而是特意来复习一遍(在代码中看到一个很高级的写法,嘿嘿!有用到位运算,厉害厉害~)运算符本来想直接写运算符的,但是想先简单讲一下什么是位运算。#比如简单的加法inta=35;intb=47;intc=a+b;当然在计......
  • csp认证202109-4——之状态压缩dp加期望(记忆化搜索
    https://www.acwing.com/problem/content/description/4012/#include<bits/stdc++.h>usingnamespacestd;#definelllonglong//#defineintlonglong#defineullunsignedlonglong#definepiipair<int,int>//#definedoublelongdouble#define......
  • Java登陆第十七天——正则表达式
    在java.util.regex包下,提供了正则表达式对字符串进行约束规范匹配正则表达式必须依靠Pattern类和Matcher类。PatternPattern类的主要作用是编写正则规范。常用方法如下:方法类型描述publicstaticPatterncompile(Stringregex)静态方法传入正则表达式规则,并返回......
  • Java基础故障处理工具
    适用场景:生产环境由于可视化工具侵入系统,带来资源占用、安全问题或者规模较小未部署可视化监控平台,此时要使用基础命令行工具;给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括但不限于异常堆栈、虚拟机运行日志、垃圾......
  • java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1
    java.lang.IllegalStateException:ExpectedBEGIN_OBJECTbutwasSTRINGatline1column2path$packagecom.example.core.mydemo.scooterOrderSms;importcom.alibaba.fastjson.JSON;importcom.example.core.mydemo.json2.GsonUtils;importcom.google.gson.Gso......