Java中字符的运算
字符Char:
字符编码:
字符编码:也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。
通俗的讲就是一套规则,将字符和响应的对象进行一一匹配,以便于在特定的场合使用,例如在计算机低层,使用二进制存储数据,因此使用高级语言编写的程序,最终会被转换为二进制,而这个转换规则,就是使用相应的字符编码。
常用的字符编码有:
ASCII码:美国定制,128个字符的编码,使用1个字节来存储,最高位为0,即实际表示数据的位有7位,即2^7次方,128个字符的表示方法。
ISO-8859-1:ISO定制,Latin1是ISO-8859-1的别名,是在 ASCII 码基础上又制定了一些标准用来扩展ASCII编码,即 00000000(0) ~ 01111111(127) 与ASCII的编码一样,对 10000000(128) ~ 11111111(255)这一段进行了编码,如将字符§编码成 10100111(167)。最多表示256个字符。
GB2312:GB2312其对所收录字符进行了"分区"处理,共94个区,区从1(十进制)开始,一直到94(十进制),每区含有94个位,位从1(十进制)开始,一直到94(十进制),共8836(94 * 94)个码位,这种表示方式也称为区位码,GB2312是双字节编码,其中高字节表示区,低字节表示位。
等等等
Unicode:Unicode是指一张表,里面包含了可能出现的所有字符,每个字符对应一个数字,这个数字称为码点(Code Point),它包含所有的字符。Unicode只是一个符号集,只规定的字符所对应的码点,并没有指定如何存储,如何进行存储出现了不同的编码方案,关于Unicode编码方案主要有两条主线:UCS和UTF。UTF主线由Unicode Consortium进行维护管理,UCS主线由ISO/IEC进行维护管理。
Java中的字符:
Java中的基本类型有:byte,char,short,int ,long ,float ,double,boolean.
注意:Java中的char类型占2个字节,C语言中字符类型占据1个字节,字符将相当于整型,每个字符都与整型有这个对应。
char基本类型使用2字节存储,java采用unicode编码,它的前128字节编码与ASCII兼容,所以‘A’和 'a'的值可以在ASCII码表中查到。当
通常用16进制表示,范围从’u0000’到’uFFFF’(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。
字符运算实例:
package com.dong.LeetCode;
/**
* 运行结果:
* 1
* a
* A
* ?
* a
*
* b
* ?
* 0
* `
* a
* @author liuD
*/
public class TestChar {
public static void main(String[] args) {
//char基本类型使用2字节存储,java采用unicode编码,它的前128字节编码与ASCII兼容,所以‘A’和 'a'的值可以在ASCII码表中查到。
//通常用16进制表示,范围从’u0000’到’uFFFF’(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。
char a = '1';
char b = 'a';
char c = 'A';
System.out.println(a);
System.out.println(b);
System.out.println(c);
//字符运算,其实就是先按照相应的进制进行加减乘除,然后结果再按照对应的字符显示
//字符和字符,当字符的超出对应的十进制127后就会以?来表示。
char as = 'a' + 'b';
System.out.println(as); // 97 + 98 > 127, 用 ? 表示
char bs = 'A'+' ';
System.out.println(bs); // 65 + 32 = 97 , 97 对应 a
char es = 'b' - 'a';
System.out.println(es); // 98 - 97 = 1 , 对应标题开始字符
//字符和数字
char cs = 'a' + 1;
System.out.println(cs); //在运算的时候,a 对应十进制97 , + 1 , 整数加法, 即66 ,再根据unicode对照表,b
char ds = 'a' + 31;
System.out.println(ds); // 97 + 31 = 128 , 以? 显示
char fs = 'a' - '1';
System.out.println(fs); // 97 - 49 = 48 , 结果为0
char gs = 'a' -1;
System.out.println(gs); // 97 - 1 = 96 ,结果为 `
//乘除同理
char hs = 'a' * 1 ;
System.out.println(hs); // 97 * 1 = 97 ,结果为a
}
}
如有总结不足,可以联系我进行补充,谢谢。