bug记录——toUpperCase 方法失效

今天发现一个超级隐藏性的bug,首先放上我的源代码:

if (Character.isLetter(arr[i])) {
                        String s = String.valueOf(arr[i]);
                        s.toUpperCase();
                        sb.append(s);
                    }

其实就是很简单的一个判断,如果那个字符为字母的话,我也把它转换成大写,结果居然是toUpperCase失效了。看了网友好多什么要用toUpperCase(Locale)什么的,结果换了Locale.US和Locale.ENGLISH都不行,这是什么奇葩问题吗?只好搜这个方法的源码了,一看到示例秒懂自己问题出在了哪里,于是改成下面这段代码,问题解决。

if (Character.isLetter(arr[i])) {
                        String s = String.valueOf(Character.toUpperCase(arr[i]));
                        sb.append(s);
                    }

只能说,细节真重要啊,要不是测试录了个姓名为类似于“xiaomei”这样的格式,我怕是都发现不了自己那行代码无效了。不过后面经人一点拨,发现toUpperCase()方法竟然是由String返回的,所以我是没赋值才出现这种情况的吗?果断再测试一下。

if (Character.isLetter(arr[i])) {
                        String s = String.valueOf(arr[i]);
                        String result = s.toUpperCase();
                        sb.append(result);
                    }

问题也解决了,真的是粗心呀,以后真的要多注意细节细节!!!

发布了63 篇原创文章 · 获赞 9 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/shan286/article/details/82386995