不用使用API将字符进行大小写转换
使用API
java.lang.String或java.lang.Character包下toUpperCase()和toLowerCase()方法(区别:String包下的能对字符串进行大小写转换,而Character包下的只能针对char类型进行使用)
System.out.println("a".toUpperCase());
System.out.println("A".toLowerCase());
System.out.println(Character.toUpperCase('a'));
System.out.println(Character.toLowerCase('A'));
打印结果:
A
a
A
a
不使用API
System.out.println((char)('a' ^ 32));
System.out.println((char)('A' ^ 32));
打印结果:
A
a
原理如下:
A=01000001 B=01000010 C=01000011 D=01000100 E=01000101 F=01000110 G=01000111 H=01001000 I=01001001 J=01001010 K=01001011 L=01001100 M=01001101 N=01001110 O=01001111 P=01010000 Q=01010001 R=01010010 S=01010011 T=01010100
U=01010101 V=01010110 W=01010111 X=01011000 Y=01011001 Z=01011010
a=01100001 b=01100010 c=01100011 d=01100100 e=01100101 f=01100110 g=01100111 h=01101000 i=01101001 j=01101010 k=01101011 l=01101100 m=01101101 n=01101110 o=01101111 p=01110000 q=01110001 r=01110010 s=01110011 t=01110100
u=01110101 v=01110110 w=01110111 x=01111000 y=01111001 z=01111010
将大写A-Z和小写a-z的二进制分别列出会发现除了从左到右第三个数字不同,其他都相同,于是可以通过^(异或运算符)32(二进制:00100000)相同位等于0,不同位等于1来得出对应的字符
0110 0001 a
^
0010 0000 32
=
0100 0001 A