作者:傻姑不傻
链接:https://www.jianshu.com/p/e5bfcc2455fd

一、前言

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

二、代码实例

1、基本类型

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

(2)推荐使用

(3)无法强转

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

instanceof判断

2、封装类型

(1)toString ok

(2)String.valueOf()

自然也是可以的。

(3)封装类型也无法强转

3、null值问题

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

(2)String.valueOf()返回字符串“null”

(3)null值强转成功

三、源码分析

1、toString()

2、String.valueOf()

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

四、总结

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异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎的使用。

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

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

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

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

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

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

    在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自<掘金>上大佬 ...

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

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

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

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

  6. tostring、(string)和 String.valueOf()

    上周遇到一个问题,只怪自己平时没注意这个细节,从数据库取数据在map集合里,取出该值是我用了.tostring的方法,一次在当取出数据为空时代码报java.lang.NullPointerExcept ...

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

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

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

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

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

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

最新文章

  1. pythonista3使用教程-pythonista3都能做什么
  2. 让Qt应用程序跑在Android上
  3. 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  4. 为什么需要 AtomicInteger 原子操作类?
  5. poj 1743 二分答案+后缀数组 求不重叠的最长重复子串
  6. AbstractQueuedSynchronizer AQS源码分析
  7. nyoj461 Fibonacci数列(4)解通项公式
  8. HFSS15.0 安装破解说明
  9. ASCII码16进制对照表
  10. 服务器cadence比虚拟机慢,Cadence版本选择浅见
  11. SEO初学者如何快速做好 SEO 优化?seo数据查询
  12. JS获取上周(自然周、最近七天)、上月(自然月、最近一个月)、全年的开始和结束日期
  13. 串口打印中文乱码及注释乱码问题
  14. Python函数式编程:map/reduce
  15. 【存储知识】NAS存储
  16. 【python】利用python实现简单粒子群优化算法实例
  17. 信号完整性分析学习--17--反射
  18. linux挂载文件夹哪个最好,细说linux挂载——mount,及其他……
  19. 需求理论:Web3集成分析
  20. linux / Generic Netlink

热门文章

  1. html 图片时钟,教你五步制作精美的HTML时钟
  2. mupdf不支持x64_ARM版Win10用户狂喜 微软全新补丁让应用不再不兼容
  3. 简述SHELL全局环境变量与局变环境变量
  4. 计算机音乐谱打上花火,原神乐谱打上花火
  5. 关于学习Python的一点学习总结(53)
  6. HDU2083排序题
  7. P1209 [USACO1.3]修理牛棚 Barn Repair(贪心+逆向思维)难度⭐⭐⭐
  8. P1803 凌乱的yyy / 线段覆盖(选择不相交区间,贪心)
  9. cefsharp 加载慢_知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍!
  10. HTML中GET与POST的区别