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. char 和 int 之间的关系
char c = 'A';
System.out.println((int) c); // 65
System.out.println((char) (c + 1)); // 'B'
🔹 char 实际上存储的是 Unicode 码点,所以可以参与算术运算。
3️⃣ char 相关的方法
char 是基本数据类型,没有直接的方法,但可以使用 Character 类(java.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️⃣ char 和 String 的转换
📌 1. char → String
char c = 'A';
String str = String.valueOf(c);
System.out.println(str); // "A"
📌 2. String → char
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️⃣ char 和 String 互相转换很简单:String.valueOf(char) 和 str.charAt(0)
你对 char 还有什么疑问吗?😊 🚀