String.valueOf()和toString()的区别

1. 举例:

有一个对象person,因为代码入口没有对它的属性(这个属性是监听消息传过来的,不是String类型,不知道是啥类型)进行校验,导致在

person.getName().toString()时引起空指针异常

解释:

首先toString()是Object的public方法,其他对象的toString()没有经过重写的情况下,走的都是Object的toString()方法,其次,这个方法必须保证调用它的对象不为空,即person.getName()不能为空,否则会报空指针异常,

后面为解决空指针异常,使用String.valueOf()来转换,但是没有想到转换为存储到数据库后,这个字段都是null,因为在String.valueOf()的源码中,它会判断调用它的对象是否为空,为空就返回"null",否则执行toString()

这导致当我的name属性为空时,它的值就是"null",然后存到数据库中就是"null",而不是""(空串),导致数据库里存的内容非常不美观!不知道后续有无其他问题

3.后面了解到还可以用(String)person.getName()来转换,但是这个转换最好使用instanceof做类型转换检查,否则也容易产生其他异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值