为Leetcode刷题而生——Java的char类型详解

469 阅读3分钟

Java char 类型详解

在 Java 中,char(字符类型)是一种基本数据类型(primitive type) ,用于存储单个字符。它占用 2 个字节(16 位) ,采用 Unicode 编码,因此可以存储全球几乎所有的字符(包括汉字、特殊符号、表情符号等)。


1️⃣ char 类型的基本特性

特性详情
占用内存2 字节(16 位),采用 Unicode 编码
存储范围\u0000(0) 到 \uFFFF(65535)
默认值'\u0000'(即 null 字符)
表示方式直接使用单引号 'A',或 Unicode 码 '\u4F60'(表示"你")
不能直接存储多个字符char c = 'AB'; 错误!
可以参与运算char 其实是无符号整数,可以当作 int 处理

2️⃣ char 的基本用法

📌 1. char 的定义

char c1 = 'A';        // 存储字母 A
char c2 = '9';        // 存储数字字符 9
char c3 = '$';        // 存储符号 $
char c4 = '\u4F60';   // 存储 Unicode 字符("你")
char c5 = 65;         // 65 对应 'A'

📌 char c5 = 65; 等价于 char c5 = 'A';,因为 char 本质上是一个无符号整数。

📌 2. charint 之间的关系

char c = 'A';     
System.out.println((int) c); // 65
System.out.println((char) (c + 1)); // 'B'

🔹 char 实际上存储的是 Unicode 码点,所以可以参与算术运算


3️⃣ char 相关的方法

char 是基本数据类型,没有直接的方法,但可以使用 Characterjava.lang.Character)来操作 char 类型。

📌 1. 判断字符类型

方法作用示例
Character.isLetter(c)判断是否是字母Character.isLetter('A') → true
Character.isDigit(c)判断是否是数字Character.isDigit('5') → true
Character.isLetterOrDigit(c)判断是否是字母或数字Character.isLetterOrDigit('$') → false
Character.isWhitespace(c)判断是否是空格Character.isWhitespace(' ') → true
Character.isUpperCase(c)判断是否是大写字母Character.isUpperCase('A') → true
Character.isLowerCase(c)判断是否是小写字母Character.isLowerCase('a') → true
char c = 'A';
System.out.println(Character.isLetter(c));  // true
System.out.println(Character.isDigit(c));   // false
System.out.println(Character.isUpperCase(c)); // true

📌 2. 大小写转换

方法作用示例
Character.toUpperCase(c)转大写Character.toUpperCase('a') → 'A'
Character.toLowerCase(c)转小写Character.toLowerCase('A') → 'a'
char c = 'a';
char upper = Character.toUpperCase(c);
char lower = Character.toLowerCase('Z');
System.out.println(upper); // 'A'
System.out.println(lower); // 'z'

📌 3. 获取 Unicode 码点

方法作用示例
Character.codePointAt(CharSequence, int)获取某个字符的 Unicode 码点Character.codePointAt("你好", 0) → 20320 ('你')
Character.codePointBefore(CharSequence, int)获取前一个字符的 Unicode 码点Character.codePointBefore("你好", 1) → 20320 ('你')
String str = "Hello";
System.out.println(Character.codePointAt(str, 1));  // 101 ('e' 的 Unicode)

4️⃣ char 的输入输出

📌 1. 输入 char

Java 没有专门的 Scanner.nextChar() 方法,需要使用 next().charAt(0)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入一个字符:");
        char c = in.next().charAt(0); // 读取输入字符串的第一个字符
        System.out.println("你输入的字符是:" + c);
    }
}

📌 2. 输出 char

直接使用 System.out.println()

char c = 'A';
System.out.println("字符:" + c);
System.out.println("字符的 Unicode 码:" + (int) c);

5️⃣ charString 的转换

📌 1. charString

char c = 'A';
String str = String.valueOf(c);
System.out.println(str); // "A"

📌 2. Stringchar

String str = "Hello";
char firstChar = str.charAt(0);
System.out.println(firstChar); // 'H'

6️⃣ 进阶:特殊字符

字符Unicode 码作用
'\n'\u000A换行
'\t'\u0009制表符
'\r'\u000D回车
' '\u0020空格
'\u4F60'"你"汉字 "你"
System.out.println("Hello\nWorld!"); // 换行
System.out.println("Hello\tWorld!"); // 制表符

##补充,Character.digit(c, 16),来转换十六进制字符为整数。


🎯 总结

1️⃣ char 本质上是 int 类型,可参与运算
2️⃣ Character 类提供了很多 char 处理方法(如大小写转换、类型判断等)
3️⃣ 输入 char 需要 next().charAt(0),输出 char 直接 System.out.println()
4️⃣ charString 互相转换很简单:String.valueOf(char)str.charAt(0)


你对 char 还有什么疑问吗?😊 🚀