String.valueOf()转换空对象

以前一直以为转字符串用String.valueOf()非常优雅,是完爆(String) 这种强转方式的,直到今天遇到了一个坑才发现String.valueOf()并非我想的那么好用。
当我用String.valueOf()去转一个为null的对象时,会返回"null",如果用(String)的方式强转的话会得到一个null

HashMap<Object, Object> map = new HashMap<>();
Object o = map.get("123");
System.out.println("o = " + o); // o=null
String s1 = String.valueOf(o);
System.out.println("s1 = " + s1); // s1="null"
String s2 = (String) o;
System.out.println("s2 = " + s2); // null

显然我是希望得到一个null的而不是一个"null",因为在判空的时候我通常喜欢用StringUtils.isBlank(str),"null"不会被过滤掉
如果用String.valueOf()直接转null会报空指针

String s3 = String.valueOf(null); // 报空指针
System.out.println("s3 = " + s3);

其实看一下valueOf()的源码就能明白是为什么了

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

如果valueOf()转的是null就返回"null’,否则调用对象的toString(),所以感觉valueOf()好像没什么用,如果我需要.toString()我为什么不手动.toString呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: String.valueOf 是 Java 中的一个方法,用于将任意基本数据类型或对象转换为字符串类型。例如: ```java int num = 10; String strNum = String.valueOf(num); // 将整型变量 num 转换为字符串类型 ``` 这个方法还可以将字符数组或部分字符数组转换为字符串类型。 ### 回答2: String.valueOf是一个Java方法,用于将不同类型的数据转换为字符串类型。它有多个重载方法,每个方法接受不同类型的参数,并返回对应的字符串结果。 当参数为基本数据类型时,String.valueOf会将其转换为对应的字符串形式。例如,int类型的参数会被转换为整数的字符串表示,float类型的参数会被转换为浮点数的字符串表示。 当参数为对象类型时,String.valueOf会调用参数对象的toString方法,将得到的字符串结果返回。这里的对象可以是任意类型,只要该类型实现了toString方法即可。 String.valueOf方法的返回值是一个字符串类型的值,可以用于赋值给一个字符串变量,或者用于字符串的拼接等操作。 此外,String.valueOf还可以用于将null值转换为字符串"null"。当参数为null时,返回的结果即为字符串"null"。 总之,String.valueOf是一个非常实用的方法,可以将不同类型的数据转换为字符串类型,方便在程序中进行字符串的操作和处理。 ### 回答3: String.valueOf是一个静态方法,用于将不同类型的数据转换String类型。它有多个重载方法,可以接受不同的参数类型,如基本数据类型、对象等。 当我们需要将其他类型的数据转换String类型时,可以使用String.valueOf方法。例如,如果我们有一个int类型的变量num,我们可以通过String.valueOf(num)将其转换String类型。 String.valueOf方法的返回值是一个String对象,表示转换后的字符串值。如果参数为null,该方法会返回"null"字符串。 除了基本数据类型,String.valueOf方法还可以处理其他类型的数据。比如,如果我们有一个对象obj,如果该对象已经实现了toString方法,那么调用String.valueOf(obj)将会返回该对象的toString方法的返回值的字符串表示。 总而言之,String.valueOf是一个非常实用的方法,可以将不同类型的数据转换String类型,方便我们在字符串的处理和拼接中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值