toString()、String.valueOf、(String)强转,有啥区别?

1 前言

注: 原文中 IDEA 2021.1,jdk 1.8

相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该有它存在的道理,那么什么情况下用哪个呢?

2 代码实例

2.1 基本类型

1、基本类型没有toString()方法

 

 

2、String.valueOf(Obj) 推荐使用

 

3、无法强转

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

TIP

IDEA 版本过高的会有警告

 

instanceof判断

Object obj = 1;
if (obj instanceof String){
    String str = (String) obj;
    System.out.println("yes");
}else
    System.out.println("no");

TIP

在做 instanceof/ if 判断的时候,IDEA 也会给出警告,低版本没用过,欢迎大家留言!

2.2 封装类型

1、toString()

 

 封装类型是可以使用toString()方法的

2、String.valueOf()

自然是可以的 (๑•̀ㅂ•́)و✧)

3、封装类型也无法强转

 

TIP

基础知识较好同学,应该知道,竟然封装类型可以进行 toString 转换,那基本类型就可以通过封装类型达到 toString

基础查的也没关系,下列文稿有代码实例:

long l = 1L;
String s = Long.toString(1);
System.out.println(s);
  • 这里涉及到拆箱装箱,有兴趣的小伙伴可以去详细了解了解,就不多讲解了

2.3 Null值问题

1、toString()报空指针异常

细心的小伙伴应该发现了,toString 方法有警告线,所以这么暖心、好用的 IDEA 你不用起来?

2、String.valueOf()返回字符串 "null"

s == null 不是报错,算一种提示/警告。。。表示一直为 falsetrue,在 instanceof判断 中有讲。

3、Null值强转成功

这里也是提示/警告,如果看着不爽,咱们把它镇压掉,只需应该注解 @SuppressWarnings("all")

烦人的警告就没用了(๑•̀ㅂ•́)و✧)。。

  • @SuppressWarnings("all") 表示镇压test01 类下所有警告,有兴趣的小伙伴可以去详细了解

3 源码分

3.1 toString()

它这里调用另一个重载 toString 方法,我们跟进一下。。。

这段代码的意思是:

返回表示指定整数的String对象。参数被转换为带符号的十进制表示,并作为字符串返回,就像参数和基数10作为参数提供给toString(int, int)方法一样。
参数: 
i -一个要转换的整数。
返回:
以10为基数的参数的字符串表示形式。

3.2、String.valueOf()

 

String.valueOf()比toString多了一个非空判断。

如果传进来的 Objnull 的话,它直接返回 "null" 字符串,否则调用 toString 方法。。。

这里可以看出使用,String.valueOf(obj) obj 为 null 返回字符串 "null"了,所有开篇,推荐大家使用valueOf。。

谁也不希望自己写着写着,突然报一个异常撒

4 总结

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

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

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

String.valueOf()方法是小编推荐使用的,因为它不会出现空指针异常,而且是静态的方法,直接通过String.调用即可,只是有一点需要注意,就是上面提到的,如果为null,String.valueOf()返回结果是字符串"null"。而不是null。

3、(String) 强转,不推荐使用

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

技术有限,如有错误,还望指出,互相学习,共同进步!

参考:http://blog.csdn.net/guorui_java/article/details/117935620

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
toString()、String.valueOf() 和强制类型转换是在不同情况下用于将不同类型的数据转换为字符串的方法。 1. toString() 方法: - toString() 是 Object 类的方法,因此它可以在任何对象上调用。 - 它将对象转换为字符串表示形式,并返回一个字符串。 - 对于自定义类,可以通过重写 toString() 方法来自定义对象的字符串表示形式。 - 例如,对于整数类型的对象 Integer num,可以使用 `num.toString()` 来将其转换为字符串。 2. String.valueOf() 方法: - String.valueOf() 是 String 类的静态方法,可以将任何基本数据类型、对象或字符数组转换为字符串。 - 它接受一个参数,并返回对应的字符串表示形式。 - 如果参数为 null,则返回字符串 "null"。 - 与 toString() 方法不同的是,String.valueOf() 方法在处理 null 值时更安全,不会抛出空指针异常。 - 例如,可以使用 `String.valueOf(num)` 将整数 num 转换为字符串。 3. 强制类型转换: - 强制类型转换是将一个数据类型转换为另一个数据类型的操作。 - 它通常用于基本数据类型之间的转换,如将整数转换为浮点数、将浮点数转换为整数等。 - 强制类型转换使用括号将要转换的数据类型放在需要转换的值之前。 - 强制类型转换可能会导致数据丢失或精度损失,需要谨慎使用。 - 例如,可以使用 `(int) num` 将浮点数 num 强制转换为整数。 总结: - toString() 是对象的方法,将对象转换为字符串。 - String.valueOf() 是静态方法,将任何类型的值转换为字符串,安全处理 null 值。 - 强制类型转换是将一个数据类型转换为另一个数据类型的操作,常用于基本数据类型之间的转换。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值