我们日常编码过程中,通常会使用反射,通过对象获取其属性,并通过属性得到其getter、setter方法,而得到get、set方法时候需要属性首字母大写。字符串首字母大写,我们通常的做法是:传统方法为先截取手字母,再转换为大写,然后在拼接,一两个固然没事,但是上百个属性情况下对性能有一定影响。
最近学习到一种巧妙的方法就是通过字符的ASCII码值加减进行大小写转换
计算机中大小写字母,ASCII码对照表
从ASCII码对照表中国可以看出,大写字母与小写字母的ASCII值相差是32,可以借助ASCII的加减来巧妙转换大小写
第一种方法:先将字符串转换为byte数组,然后byte数组首位强换为char字符,进行ASCII加减操作,最后byte数组转换为字符串
如属性itemName,首字母i的ASCII码值是105,减a,加上A,即105-97+65 = 73,刚好为大写的I
private static String getMethodName(String fildeName) {
byte[] items = fildeName.getBytes();
items[0] = (byte) ((char) items[0] - 'a' + 'A');
return new String(items);
}
第二种方法 :先将字符串转换为char数组,然后一步到位,直接将数组首位字符ASCII码值减32,最后char数组转换为字符串
private static String getMethodName(String str) {
char[] cs=str.toCharArray();
cs[0]-=32;
return String.valueOf(cs);
}
以上两种方法都是一个原理,只是写法不同而已