一. 前言

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

二. 代码实例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. String类以及String与基本数据类型/char[]/byte[]之间的转换

    String类: 1.String 声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的. 实现了Comparable接口:表示String可以 ...

  8. Java中的String数据类型,String类(字符串)详解

    目录 第一章.String概述 1)String是什么 2)String长什么样 3)String的构造方法(声明方式) 第二章.String类的详解 1)String底层是什么 2)字符串存储的内存 ...

  9. Java字符串拼接:int和String类型、String和Sting类型

    一.Int和String拼接成String 1.用+拼接 String str = "abc"; int i = 10; String result = str + i; 2.将i ...

  10. int类型转换String类型,String类型转换成int类型

    一.int 类型转换 成String类型 定义一个int类型int i =100;//方法一:使用 i+""; String s1 = i+"";//方法二:S ...

最新文章

  1. dva.js在index。tsx中获取script标签引用的文件
  2. Hexo博客新福利:HexoEditor编辑器最新使用方法
  3. TabBarItem的Badge
  4. 字符串类型的数字比较大小_Python核心知识系列:数字与字符串类型
  5. 在一个禁止离婚的国家结婚
  6. 一淘网挑战百度意在造势 人才储备成最大障碍
  7. java迭代法求圆周率用梯形_感悟数学“近似计算”之美——“望星楼”里的圆周率...
  8. XXXfragment that is not a fragment错误,fragment认不出来
  9. Quartz 定时任务时间表达式说明
  10. mysql 员工登记表_员工部门信息表-myemployees
  11. 成功破解某app加密接口
  12. 【历史上的今天】4 月 23 日:YouTube 上传第一个视频;网易云音乐正式上线;数字音频播放器的发明者出生
  13. 检测网站CDN是否生效
  14. 在OpenCV里实现直方图反向投影算法
  15. Win 10 关闭系统自动更新(解决svchost.exe 占用网络问题,解决svchost.exe不断消耗流量问题)
  16. 分享一个颜色渐变的网站
  17. linux将日历信息导出到,在 Linux 命令行中规划你的假期日历
  18. pycharm远程连接服务器完整教程
  19. 怎样消除幸存者偏见?——谈谈成败观
  20. Leetcode 417 题 太平洋大西洋水流问题

热门文章

  1. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--K-密码
  2. ios 关于自定义navigationItem,实现右侧多个按钮
  3. 如果有一些引用存在于标记中,则不会重命名这些引用,要继续吗?
  4. ASP.NET Web开发实用代码(一)
  5. 【MyBatis笔记】16-多对多关系建表
  6. SuseLinux详解(3)——开启/关闭防火墙的方法
  7. SecureCRT使用过程中 光标会丢失的问题
  8. 做了3年Excel报表,换了这个报表神器后,不禁感叹:国产真香
  9. 想要轻松入门数据分析,这些知识不得不看!
  10. 如何用报表解决销售工作衡量问题