字符集、编码和字符串
什么是字符集(Charset)
- 字符集是字符的集合。一般包含一种语言的字符。比如GBK是包含所有常用汉字字符的字符集。ASCII是包含英文字符的字符集。
- 字符就是Java中的char,char是character的简写。
什么是编码(Encoding)
- char代表一个字符,char本质上也是数字。将数字映射到字符,就叫编码。
- 将一个字符集映射到数字,就是给这个字符集编码。编码是有标准的,所有的计算机系统按照同一个编码标准执行。
- 有时候编码和字符集会混用。
常用的字符集简介
- ASCII码,ASCII表:https://baike.baidu.com/item/ASCII/309296#3
- Unicode包含世界上所有的常用字符,编码也有几种,包括UTF-8(8-bit Unicode Transformation Format),UTF-16等。
- Unicode,GBK等所有常用的字符集,都会兼容ASCII。例如,字符A在这些所有常用的字符集里,都是对应数字65。
public class ComplexChar { public static void main(String[] args) { int a = 65; char cha = (char) a; char hhh = '\u4239'; System.out.println(cha); System.out.println(hhh); } }
Java中的字符集
- Java中用的是UTF-16编码的Unicode。
- UTF-16用16个bit,即2个byte,这也是char占两个byte的原因。当把char转成数字的时候,需要用int。
ASCII码和转义符(escape character)
- 如何输出特殊字符:
- ASCII码 +char,通过ASCII表可以找到需要的字符对应的数字。将这个数字转换为char,然后输出这个char。
- 转义符。转义符用来给字符赋值,也可以用在字符串里面,作为字符串中的一个字符。
- 转义符语法和常用的转义符:
- \n 换行符(new line)
- \t 制表符
- \" 双引号
- \uXXXX unicode编码对应的字符
public class ComplexCharInString { public static void main(String[] args) { // \t制表符 \"双引号 \n换行(new line) String content = "a\tb\"\tc\n\td\t"; String align = "1111222233334444"; System.out.println(content); System.out.println(align); } }
字符串的“加法”
- 将变量穿插在字符串中输出
- 字符串可以和任何类型进行加法运算,则会将这个值的字符拼接到字符串上;
- 字符串也可以使用+=操作符来拼接;
- 字符串的加法运算符符合加法运算符本身的优先级。
- 字符串不是Java中的基本数据类型
- 字符串类型的名字叫做String;
- 虽然String不是Java中的基本数据类型,但是也可以使用类似的语法: String str = "abc"; 来创建。开始的时候将其当成基本类型,更容易理解。
- String不是Java中的保留字。
- String的加法不会改变原String变量的值,改变其值要用赋值语句
public class StringConcat { public static void main(String[] args) { int String = 999; // String不是基本数据类型,也不是关键字和保留字。但是可以用类似的语法。 System.out.println(String); String zifuchuang = "String声明来的字符串!"; System.out.println(zifuchuang); int a = 10; int b = 20; int c = a + b; System.out.println("a + b = " + c); boolean aBiggerThanB = a > b; System.out.println("a > b 是"+aBiggerThanB+"的。"); System.out.println("a + b = " + a + b); // 这里的a会先和前面的字符串相连接。 System.out.println("a + b = " + (a + b)); System.out.println("a * b = " + a * b); } }
public class StringVariable { public static void main(String[] args) { // 虽然String不是Java中的基本数据类型,但是也可以使用类似的语法: String str = "abc"; 来创建。 int a = 10; String str = "a的值是"; str = str + a; // 赋值会改变str的值。 System.out.println(str); String s2 = "a的值是"; System.out.println(s2 + a); // 加法本身不会改变s2的值。 System.out.println(s2); } }