大坑!!!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中的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

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典