Java大写字母转换成小写字母(转载)
问题:把一个小写字母转对应的大写字母,有几种办法?
解题思路1:
使用语言自带的API
public Character toLowerCase(Character s) { return Character.toLowerCase(s); //return Character.toUpperCase(s); }
解题思路2:
大写字母 A~Z 的 ASCII 码范围为 [65, 90]
小写字母 a~z 的 ASCII 码范围为 [97, 122]
如果ch的 ASCII 码在 [65, 90] 的范围内, 那么我们将它的 ASCII 码增加 32 , 即可得到对应的小写字母
32 对应的二进制表示为 [00100000]
[65, 96] 对应的二进制表示为 [(01000001), (01011010)], 在 [65, 96] 这个区间的所有数表示 32 的那个二进制都是 0 (即对应上述标红的三个数字位置)
65 + 32 = 01000001 + 00100000 = 01100001
而二进制中的 0 + 1 在按位或运算中可以得到 1
因此可以对 ch 的 ASCII 码与 32 做按位或运算,替代 ch 与 32 的加法运算
特别是当我们不知道当前字符是大小还是小写的时候,使用位运算异或32可以减少一次if/else判断
因为小写字母的二进制表示在32的那个位都是0,所有小写字母与32异或,对应位就会变成1,整个数字就会变成对应大写字母
而反过来,所有大写字母的二进制表示在32的那个位都是1,与32异或,对应位就会变成0,整个数字就会变成对应小写字母
//lower to upper or upper to lower public Character transform(char s){ return (char)s^32; }
原文链接:https://blog.csdn.net/LX__dream/article/details/124050422
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了