在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 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 转换异常。如果确需使用,还请谨慎为好!

toString()、String.valueOf()、(String) 强转的区别相关推荐

  1. String、toString、String.valueOf()三个有啥区别?

    今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...

  2. 头条三面:toString()、String.valueOf、(String)强转,有啥区别?

    欢迎关注方志朋的博客,回复"666"获面试宝典 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该 ...

  3. 头条三面: String.valueOf、toString()、(String)强转,有啥区别?

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

  4. toString()、String.valueOf、(String)强转,如何抉择,你真的了解吗

    作者:傻姑不傻 链接:https://www.jianshu.com/p/e5bfcc2455fd 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想 ...

  5. Java中String字符串toString()、String.valueOf()、String强转、+ 的区别

    Object#toString(): Object object = getObject(); System.out.println(object.toString()); 在这种使用方法中,因为ja ...

  6. toString()和String.valueOf()的区别(转)

    惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 有的朋友在用这两个的时候感觉差不多 其实,很多时候效果是差不多的 但是,有的时候用.toString()会报错,而用S ...

  7. String String.valueof() toString三者之间的区别~

    String  String.valueof()  toString三者之间的区别~ (String )强制类型转换,使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instan ...

  8. 关于 java.toString() ,(String),String.valueOf的区别

    今天,在群里有一个妹子问我一个问题,我开始时草草帮她解答,后来她说她还是没懂,然后自己仔细看了看,才发现自己其实更本没说清楚其中的道理,在查看源代码和API然后在网上看看前辈们的文章才知道了,这个问题 ...

  9. (String)、toString、String.valueOf的区别

    String.valueOf()它可以将JAVA基本类型(int,double,boolean等)和对象(Object)转换成String型toString()是对象的方法,它可以将该对象转换成Str ...

最新文章

  1. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】
  2. 面试题-- 什么是偏向锁
  3. 2020 年,云游戏将爆发?各大科技公司云游戏布局大曝光!
  4. JDK源码解析之 Java.lang.StringBuilder
  5. client netty 主动发数据_netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》...
  6. 【配置文件】Log4j
  7. 加速你的Hibernate引擎(下)
  8. 3d建模电脑配置要求_3D建模学习对于电脑配置要求高不高?
  9. MySQL索引类型及优化
  10. Ubuntu 汉化及kate汉化和使用自带终端的解决方式
  11. Unity3D最全性能优化参考手册(渲染、代码、UI)
  12. Unity3D Slider控件(滑动条)
  13. wincc7.5系统语言切换功能(C脚本)
  14. 申请手册:英国百所大学中文名称及网址
  15. #pragma once 用法总结
  16. Element 入门教程
  17. Apple 850 订单EDI X12报文格式解析
  18. steam卡价越来越高,steam搬砖项目还能玩么?
  19. 伦敦国王学院计算机申请要求,伦敦大学国王学院教育中计算机应用文学硕士研究生申请要求及申请材料要求清单...
  20. 车载智能导航系统有没有采用嵌入式计算机,嵌入式车载导航系统的应用与研究...

热门文章

  1. 如何理解和学习MAYA API
  2. 基于Arduino的机械电子鱼
  3. 计算机辅助教育发展趋势 人工智能,浅析计算机辅助教学发展趋势的探讨
  4. 有道云、印象、语雀 笔记 个人使用体验对比
  5. 函数调用:传值与传址
  6. 无心剑中译叶芝诗18首
  7. 对于斗地主自己视角断王,且出现王炸概率的分析
  8. HashMap::put方法源码解析及执行流程图
  9. Windows11快捷键
  10. git 常用操作总结——基于Gitlab