博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String.ValueOf和toString区别
阅读量:4293 次
发布时间:2019-05-27

本文共 1589 字,大约阅读时间需要 5 分钟。

动力节点 2017-09-08 10:14

官方微信:动力节点Java学院

在Java开发中,我们经常用到将对象转换成String类型这一功能,常用的有如下三种方式

  • (String)[对象]

  • [对象].toString

  • String.valueOf([对象])

(String)

这是标准的类型转换,将对象强制转换为String类型,前提是 该对象必须能保证转成String类型,否则将抛出ClassCastException异常

toString

API源码:

/*** This object (which is already a string!) is itself returned.** @return the string itself.*/public String toString() { return this;}

此方法返回对象本身,在java.lang.Object类中也有toString()方法,所以Java对象都可以调用此方法,但使用的时候 必须保证要转换的对象不为null ,否则将抛出NullPointerException异常

String.valueOf()

API源码

/*** Returns the string representation of the Object argument.** @param obj an Object.* @return if the argument is null, then a string equal to* "null"; otherwise, the value of* obj.toString() is returned.* @see java.lang.Object#toString()*/public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}

从上面源码可以看出,我们不用担心Object为null,但使用的时候也要小心, 当Object为null时,它的返回值是“null”,而不是null ,是有区别的。

示例代码

public class Test { public static void main(String[] args) { Object obj = new Object(); String str = null;System.out.println((String) obj); // ①System.out.println(str.toString()); // ②System.out.println(String.valueOf(str)); // ③}}

①行代码使用(String)强制转换,由于是Object类型无法转换成String,所以报如下异常

Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.Stringat com.becoda.bkms.bus.energyindex.web.Test.main(Test.java:11)

②行代码使用toString()方法,由于str为null,所以报如下异常

Exception in thread "main" java.lang.NullPointerExceptionat com.becoda.bkms.bus.energyindex.web.Test.main(Test.java:12)

③行代码使用String.valueOf()方法,即使str为null,也不会报错,返回字符串null

转载地址:http://zkzws.baihongyu.com/

你可能感兴趣的文章
查看linux核心数
查看>>
数据结构与算法三: 数组
查看>>
Activiti工作流会签二 启动流程
查看>>
Activiti工作流会签三 撤销,审批,驳回
查看>>
Oauth2方式实现单点登录
查看>>
CountDownLatch源码解析加流程图详解--AQS类注释翻译
查看>>
ES相关度评分
查看>>
我们一起做一个可以商用的springboot脚手架
查看>>
idea在搭建ssm框架时mybatis整合问题 无法找到mapper
查看>>
java设计基本原则----单一职责原则
查看>>
HashMap的实现
查看>>
互斥锁 synchronized分析
查看>>
java等待-通知机制 synchronized和waity()的使用实践
查看>>
win10 Docke安装mysql8.0
查看>>
docker 启动已经停止的容器
查看>>
order by 排序原理及性能优化
查看>>
Lock重入锁
查看>>
docker安装 rabbitMq
查看>>
git 常用命令 入门
查看>>
linux安装docker
查看>>