toString()、String.valueOf、(String)强转,如何抉择,你真的了解吗
作者:傻姑不傻
链接: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)强转,如何抉择,你真的了解吗相关推荐
- 头条三面:toString()、String.valueOf、(String)强转,有啥区别?
欢迎关注方志朋的博客,回复"666"获面试宝典 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该 ...
- 头条三面: String.valueOf、toString()、(String)强转,有啥区别?
一. 前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该有它存在的道理,那么什么情况下用哪个呢? 二. 代码实例 1. 基 ...
- toString()、String.valueOf()、(String) 强转的区别
在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自<掘金>上大佬 ...
- Java中String字符串toString()、String.valueOf()、String强转、+ 的区别
Object#toString(): Object object = getObject(); System.out.println(object.toString()); 在这种使用方法中,因为ja ...
- String、toString、String.valueOf()三个有啥区别?
今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...
- tostring、(string)和 String.valueOf()
上周遇到一个问题,只怪自己平时没注意这个细节,从数据库取数据在map集合里,取出该值是我用了.tostring的方法,一次在当取出数据为空时代码报java.lang.NullPointerExcept ...
- 关于 java.toString() ,(String),String.valueOf的区别
今天,在群里有一个妹子问我一个问题,我开始时草草帮她解答,后来她说她还是没懂,然后自己仔细看了看,才发现自己其实更本没说清楚其中的道理,在查看源代码和API然后在网上看看前辈们的文章才知道了,这个问题 ...
- (String)、toString、String.valueOf的区别
String.valueOf()它可以将JAVA基本类型(int,double,boolean等)和对象(Object)转换成String型toString()是对象的方法,它可以将该对象转换成Str ...
- toString()和String.valueOf()的区别(转)
惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 有的朋友在用这两个的时候感觉差不多 其实,很多时候效果是差不多的 但是,有的时候用.toString()会报错,而用S ...
最新文章
- pythonista3使用教程-pythonista3都能做什么
- 让Qt应用程序跑在Android上
- 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
- 为什么需要 AtomicInteger 原子操作类?
- poj 1743 二分答案+后缀数组 求不重叠的最长重复子串
- AbstractQueuedSynchronizer AQS源码分析
- nyoj461 Fibonacci数列(4)解通项公式
- HFSS15.0 安装破解说明
- ASCII码16进制对照表
- 服务器cadence比虚拟机慢,Cadence版本选择浅见
- SEO初学者如何快速做好 SEO 优化?seo数据查询
- JS获取上周(自然周、最近七天)、上月(自然月、最近一个月)、全年的开始和结束日期
- 串口打印中文乱码及注释乱码问题
- Python函数式编程:map/reduce
- 【存储知识】NAS存储
- 【python】利用python实现简单粒子群优化算法实例
- 信号完整性分析学习--17--反射
- linux挂载文件夹哪个最好,细说linux挂载——mount,及其他……
- 需求理论:Web3集成分析
- linux / Generic Netlink
热门文章
- html 图片时钟,教你五步制作精美的HTML时钟
- mupdf不支持x64_ARM版Win10用户狂喜 微软全新补丁让应用不再不兼容
- 简述SHELL全局环境变量与局变环境变量
- 计算机音乐谱打上花火,原神乐谱打上花火
- 关于学习Python的一点学习总结(53)
- HDU2083排序题
- P1209 [USACO1.3]修理牛棚 Barn Repair(贪心+逆向思维)难度⭐⭐⭐
- P1803 凌乱的yyy / 线段覆盖(选择不相交区间,贪心)
- cefsharp 加载慢_知道硬盘很慢,但没想到比 CPU Cache 慢 10000000 倍!
- HTML中GET与POST的区别