不用使用API将字符进行大小写转换

不用使用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

你可能感兴趣的:(java)