toString()、String.valueOf()、(String) 强转的区别

在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自《掘金》上大佬的 头条三面:toString()、String.valueOf、(String)强转,有啥区别? - 掘金 ,来叙述一下这三种方法的使用场景。废话少说,直接上代码!

一、基本类型转换

1.toString()

基本类型是没有 toString() 方法的

2.String.valueOf()

基本类型转 String 类型时,推荐使用 String.valueOf() 方法。

可以看到,基本上所有的基本类型都可以使用 String.valueOf() 方法去转换为 String 类型。

3.(String) 强转

一般情况下,不推荐使用强转的方法去将某一类型转换为 String 类型。

代码会提示类型错误的。(String) 是标准的类型转换,可将 Object 类型转为 String 类型,使用(String) 方法进行强转时,最好使用 instanceof 做一个类型检查,以判断是否可以进行强转,否则容易抛出 ClassCastException 异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎的使用。

使用 instanceOf 与不使用 instanceOf 对比:

当待转换数据的类型为 Integer 时,使用 (String) 方法强转会报错,所以一般情况下能使用 String.valueOf() 方法进行转换的,就不推荐使用 (String) 方法强转。

二、包装类型转换

1.toString()

包装类型时可以使用 toString() 方法去成功转换为 String 类型的。

2.String.valueOf()

包装类型也是可以使用 String.valueOf() 方法去转换为 String 类型的。

3.(String) 强转

包装类型的强转和基本类型的强转一样,都会报错的,这也是各种大佬不使用 (String) 去进行强转的原因

三、null 值问题

1.toString() 会报空指针异常

对 null 值进行 toString() 转换时,会报空指针异常。

2.String.valueOf() 会转换为 "null" 字符串

注意,不是 null 值,而是 "null" 字符串。

3.(String) 强转成功

注意使用强转的方法去转换 null 值与使用 String.valueOf() 方法去转换 null 的区别,强转返回 null 值,String.valueOf() 方法会返回 "null" 字符串。

这是因为 String.valueOf() 的源码就是这么转换的

总结一下就是:

1、toString(),可能会抛空指针异常

在这种使用方法中,因为 java.lang.Object 类里已有 public String toString() 方法,所以 java 对象都可以调用此方法。但在使用时要注意,必须保证 object 不是 null 值,否则将抛出NullPointerException 空指针异常。采用这种方法时,通常派生类会覆盖 object 里的 toString() 方法。

2、String.valueOf(),建议使用,返回字符串 "null"

String.valueOf() 不会出现空指针异常,而且是静态的方法,直接通过 String 调用即可,只是有一点需要注意,就是上面提到的,如果为 null,String.valueOf() 返回结果是字符串 "null",而不是null,这就要求如果需要对String.valueOf() 方法转换之后字符串进行判空等逻辑除了里的时候,一定要注意 "null"。

3、(String) 强转,不建议使用

(String)是标准的类型转换,将 Object 类型转为 String 类型,使用 (String) 强转时,最好使用 instanceof 做一个类型检查,以判断是否可以进行强转,否则容易抛出 ClassCastException 转换异常。如果确需使用,还请谨慎为好!

  • 11
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值