天天看點

07-字元集編碼和字元串

目錄

  • 什麼是字元集和編碼
  • 編碼和字元集介紹
  • ASCII 碼和轉義符(escape character)
  • 字元串的“加法”

1. 什麼是字元集和編碼

  • 什麼是字元集(Charset)
    • 字元集就是字元的集合。一般會包含一種語言的字元。比如 GBK,是包含所有常用漢字字元的字元集。ASCII 是包含英文字元的字元集。
    • 字元就是 Java 中的 char ,char 是 character 的簡寫。
  • 什麼是編碼(Encoding)
    • char 代表一個字元,char 的本質也是數字。将數字映射到字元,就叫編碼。
    • 将一個字元集映射到數字,就是給這個字元集編碼。編碼是有标準的,所有的計算機系統按照同一個編碼标準執行。
    • 有時候編碼和字元集會混用。

2. 編碼和字元集介紹

  • 常用的字元集簡介
    • ASCII碼,ASCII表:https://baike.baidu.com/item/ASCII/309296
    • Unicode 包含世界上所有常用字元,編碼也有幾種,包括 UTF-8(8-bit Unicode Transformation Format ),UTF-16 等。
    • Unicode,GBK 等所有常用的字元集,都會相容 ASCII。舉個例子,字元 A 在這些所有常用的字元集裡,都是對應數字 65。
  • Java中的字元集
    • Java 中用的是 UTF-16 編碼的 Unicode。
    • UTF-16 用16個 bit,即兩個byte,這也是char占用兩個byte的原因。當把 char 轉成數字的時候,需要用 int。

3. ASCII 碼和轉義符(escape character)

  • 如何輸出特殊字元
    • ASCII 碼+char,通過 ASCII 表可以找到需要的字元對應的數字。将這個數字轉換為 char, 然後輸出這個 char。「假如鍵盤上的 A 壞了,這個時候我們需要輸入 A 怎麼辦呢?就可以使用這個方法」 ASCII 表:https://baike.baidu.com/item/ASCII/309296
    • 轉義符。轉義符用來給字元指派,也可以用在字元串裡面,作為字元串中的一個字元。
  • 轉義符文法和常用的轉義符
    • \n,換行符
    • \",雙引号
    • \t,制表符
    • \uXXXX,unicode 編碼對應的字元。
public class ComplexCharInString {
    public static void main(String[] args) {
        String content = "a\tb\tcc\tee\t";
        String align = "1111222233334444";
        System.out.println(content);
        System.out.println(align);
    }
}
           
a	b	cc	ee	
1111222233334444
           
public class ComplexChar {
    public static void main(String[] args) {
        int a = 65;
        char cha = (char) a;

        char zang = '\u81e7';

        System.out.println(cha);

        System.out.println(zang);
    }
}
           
A
臧
           

4. 字元串的“加法”

  • 将變量穿插在字元串中輸出
    • 字元串可以和任何類型進行加法運算,則會将這個值的字元拼接到字元串上。
    • 字元串也可以使用 += 操作符來拼接
    • 字元串的加法運算符符合加法運算符本身的優先級
  • 字元串不是 Java 中的基本資料類型
    • 字元串類型的名字叫做 String
    • 雖然 String 不是 Java 中的基礎類型,但是也可以使用類似的文法 String str = “abc”; 來建立。開始的時候将其當成基礎類型,更容易了解。
    • String 不是 Java 中的保留字。
  • String 的加法不會改變原 String 變量的值,改變其值要 用指派語句
public class StingConcat {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a + b;
        System.out.println("a + b=" + c); // a + b=30

        boolean aBiggerThanB = a > b;
        System.out.println("a > b 是" + aBiggerThanB + "的"); // a > b 是false的

        System.out.println("a + b=" + a + b); // a + b=1020

        System.out.println("a + b =" + (a + b)); // a + b =30

        System.out.println("a * b=" + a * b); // a * b=200

    }
}
           
public class StringVariable {
    public static void main(String[] args) {
        int a = 10;
        String str = "a的值是";
        str = str + a;
        System.out.println(str); // a的值是10

        String s2 = "a的值是";
        System.out.println(str + a); // a的值是1010
        System.out.println(s2); // a的值是
    }
}