Java toLowerCase()/toUpperCase()方法的使用注意

文章出处:http://topic.csdn.net/u/20110828/09/f26c887b-7b41-49f0-a882-71d44750aa00.html?seed=1548072073&r=75221759#r_75221759

在此感谢“天涯浪子”的分享

说明:如果大家写的代码涉汲到国际化的话,就看下去。如果想了解也可以看下去。

大家看下如下代码,我们在运行时,会是一个什么样的结果:

肯定有人说,这个肯定是true…没错,一般人想到这个肯定是true,但是…我们看看toUpperCase()(或toLowerCase(),下文件只说其中一个方法了)方法的源代码:

注意,这里调用了一个带Locale的重载方法,于是我们再看以下代码:

这个时候,运行的结果相信大家都能看得出来,是一个false,tr是土耳其的语言代码(至少在没有土语的机器上会不一样,还有其它地区的语言在返回时不是直接转成大写的,还加了一些特殊的符号),如果不幸,你写的程序正在这些地区运行,那就会得到一个错误的结果,甚至于你连错误的地方都找不到,很容易忽略它。因此我们在使用toLowerCase()方法时,尽量使用toLowerCase(Locale.US)这个方法来代替(或使用equalsIgnoreCase()方法来比较),这样就不会因为在不同语言的机器上出现一些让人莫名其妙的问题了。

如果大家使用过findbugs的话,会发现凡是使用toLowerCase()的地方,findbugs都会有警告提示的,我开始在修改findbugs时(XX公司要求外包项目静态检查结果一定要清零),不明所以,直接就将toLowerCase(Locale.getDefault())搬出来了,今天看到这样的说明惊得一身冷汗,幸好….幸好….

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值