字符集、编码和字符串

什么是字符集(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);
    }
}
posted @ 2020-01-01 22:47  见嘉于世  阅读(786)  评论(0编辑  收藏  举报