头条三面: String.valueOf、toString()、(String)强转,有啥区别?
一. 前言
相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该有它存在的道理,那么什么情况下用哪个呢?
二. 代码实例
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)强转,有啥区别?相关推荐
- toString()、String.valueOf()、(String) 强转的区别
在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自<掘金>上大佬 ...
- Java中String字符串toString()、String.valueOf()、String强转、+ 的区别
Object#toString(): Object object = getObject(); System.out.println(object.toString()); 在这种使用方法中,因为ja ...
- String String.valueof() toString三者之间的区别~
String String.valueof() toString三者之间的区别~ (String )强制类型转换,使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instan ...
- 头条三面:toString()、String.valueOf、(String)强转,有啥区别?
欢迎关注方志朋的博客,回复"666"获面试宝典 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该 ...
- toString()、String.valueOf、(String)强转,如何抉择,你真的了解吗
作者:傻姑不傻 链接:https://www.jianshu.com/p/e5bfcc2455fd 一.前言 相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想 ...
- 关于 java.toString() ,(String),String.valueOf的区别
今天,在群里有一个妹子问我一个问题,我开始时草草帮她解答,后来她说她还是没懂,然后自己仔细看了看,才发现自己其实更本没说清楚其中的道理,在查看源代码和API然后在网上看看前辈们的文章才知道了,这个问题 ...
- String类以及String与基本数据类型/char[]/byte[]之间的转换
String类: 1.String 声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的. 实现了Comparable接口:表示String可以 ...
- Java中的String数据类型,String类(字符串)详解
目录 第一章.String概述 1)String是什么 2)String长什么样 3)String的构造方法(声明方式) 第二章.String类的详解 1)String底层是什么 2)字符串存储的内存 ...
- Java字符串拼接:int和String类型、String和Sting类型
一.Int和String拼接成String 1.用+拼接 String str = "abc"; int i = 10; String result = str + i; 2.将i ...
- int类型转换String类型,String类型转换成int类型
一.int 类型转换 成String类型 定义一个int类型int i =100;//方法一:使用 i+""; String s1 = i+"";//方法二:S ...
最新文章
- dva.js在index。tsx中获取script标签引用的文件
- Hexo博客新福利:HexoEditor编辑器最新使用方法
- TabBarItem的Badge
- 字符串类型的数字比较大小_Python核心知识系列:数字与字符串类型
- 在一个禁止离婚的国家结婚
- 一淘网挑战百度意在造势 人才储备成最大障碍
- java迭代法求圆周率用梯形_感悟数学“近似计算”之美——“望星楼”里的圆周率...
- XXXfragment that is not a fragment错误,fragment认不出来
- Quartz 定时任务时间表达式说明
- mysql 员工登记表_员工部门信息表-myemployees
- 成功破解某app加密接口
- 【历史上的今天】4 月 23 日:YouTube 上传第一个视频;网易云音乐正式上线;数字音频播放器的发明者出生
- 检测网站CDN是否生效
- 在OpenCV里实现直方图反向投影算法
- Win 10 关闭系统自动更新(解决svchost.exe 占用网络问题,解决svchost.exe不断消耗流量问题)
- 分享一个颜色渐变的网站
- linux将日历信息导出到,在 Linux 命令行中规划你的假期日历
- pycharm远程连接服务器完整教程
- 怎样消除幸存者偏见?——谈谈成败观
- Leetcode 417 题 太平洋大西洋水流问题