大坑!!!String.valueOf()输出“null“【查看源码】

2023-12-22 18:36

本文主要是介绍大坑!!!String.valueOf()输出“null“【查看源码】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目中使用String.valueOf(),结果在数据库中存入了   "null"    这个字符串!!!!!

测试如下:

溯源:String.valueOf()被重载了多次,其中包含基本数据类型,包装类,和char数组。

重载的方法,默认会选择精度更高的。比如两个重载方法入参分别是List和ArrayList,那么调用的时候,会走ArrayList。

重载的数据。

public static String valueOf(Object obj) {return   (obj == null) ? "null" : obj.toString();
}public static String valueOf(char data[])public static String valueOf(char data[], int offset, int count)public static String valueOf(boolean b)public static String valueOf(char c) public static String valueOf(int i)public static String valueOf(long l)public static String valueOf(double d)

当我们代码中写到,获取某个对象的值,这是很常见的业务场景。

Map<String, String> map = new HashMap<>();String tmp = String.valueOf(map.get("test"));// test 是一个不存在的key

但是此时key可能不存在,value也必然不存在,结果就是null

String.valueOf(),就会走Object。

源码可以看到,判断为null,就返回"null"。这样就导致数据库存了一个"null"字符串。

    public static String valueOf(Object obj) {return (obj == null) ? "null" : obj.toString();}

总结,以后尽量在业务之前判空。

既然String.valueOf()底层也是toString(),为什么不直接用toString()???

  • String.valueOf()还重载了基本数据类型,基本数据类型不能toString(),
  • 避免了null的情况,null调用toString(),会报错。
    • 但也正是因为不会报错,所以他返回了一个"null"字符串,这就需要我们自己判断了。

这篇关于大坑!!!String.valueOf()输出“null“【查看源码】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525022

相关文章

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE