(字符串转对象 java)
,原文标题:灵魂拷问:java对象转字符串,你真的用对方法了吗?。在平时的开发中,会遇到需要将对象转为字符串的情况,比
,原文标题:灵魂拷问:java对象转字符串,你真的用对方法了吗?。
在平时的开发中,会遇到需要将对象转为字符串的情况,比较常用的3个方法是:(String)、String.valueOf、toString。这时可能有点懵,既然有三个方法,那他们有什么不同?什么时候该用哪个?
今天我们就来聊聊这三个方法的区别。
(String)
- 类型强转,将Object强制转为String类型。但是并不是所有类型都能强转,需要注意的是类型原本就是字符串的对象才能转成String类型,否则会抛出ClassCastException异常。
- 比如我们放入redis字符串,然后从redis拿出时是Object类型,这时就可以使用(String)强转。
- 那当别人传过来一个Object,我也不知道它到底是不是字符串,怎么办?其实你可以先使用instanceof做一个类型检查,以判断是否可以进行强转,如下:
public static void main(String[] args) { Object a="字符串"; if(a instanceof String){ System.out.println("我是字符串,可以强制为字符串"); System.out.println((String) a); }else{ System.out.println("我不是字符串,臣妾办不到"); } }
toString
- 在api文档中是这样说的:返回对象本身,也就是说对任何严格意义上的java对象都可以调用此方法,因为java.lang.Object类里已有public方法.toString()。
- 但必须保证Object不是null值,不然会抛出NullPointerException异常,也就是平时常说的空指针异常
public static void main(String[] args) { Object a=null; String s = a.toString(); System.out.println(s); }Exception in thread "main" java.lang.NullPointerException
- 基本类型是没有toString
- 所以在调用toString前,要先判断对象是否为空
public static void main(String[] args) { Object a=getObject(); if(null!=a){ String s = a.toString(); System.out.println(s); } }
String.valueOf
- 这个方法是静态的,直接通过String调用,它是在toString的基础上实现的,但是不同的是,String.valueOf不用担心object是否为null,可以说很完美。从以下源码可以看到,valueOf已经做了空的判断。
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
- 虽然帮我们自动判空了,但是也存在一定的隐患,你可能已经注意到返回的是字符串的“null”,而不是null
//错误写法 public static void main(String[] args) { Object a=null; if(String.valueOf(a)==null){ System.out.println("空"); }else{ System.out.println("非空"); } } //正确写法 public static void main(String[] args) { Object a=null; if(String.valueOf(a)=="null"){ System.out.println("空"); }else{ System.out.println("非空"); } }
总结
以上就是对平时常用的对象转字符串的方法的介绍,个人建议使用String.valueOf来进行转换,这个方法安全可靠。
关注公众号:臻大虾,分享更多java后端干货

随机文章
SEO教程站长导航
友情链接交换
关键词排名优化
网站内容优化
SEO教程
站长导航
搜素引擎算法
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:臻大虾,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/848641.html

微信扫一扫
支付宝扫一扫