Java Character 类
在 Java 中,Character
类是 java.lang
包的一部分,它是基本数据类型 char
的包装类。Character
类提供了一系列实用方法,用于操作、判断和转换字符。今天我们就来系统学习这个类!🚀
1️⃣ 基本概述
char
是基本数据类型,表示一个 16 位的 Unicode 字符(如 'A'
、'中'
、'9'
等)。
Character
是包装类,用于将 char
封装为一个对象,并提供丰富的方法操作字符。
声明示例:
1 2 3
| char ch = 'A'; Character character = 'A'; Character character2 = new Character('B');
|
2️⃣ 常用方法
🔹 判断字符类型的方法
这些方法会返回一个布尔值,告诉你这个字符属于哪种类型。
1 2 3 4 5 6 7 8 9 10 11
| public class CharacterCheckExample { public static void main(String[] args) { char ch = 'A';
System.out.println(Character.isLetter(ch)); System.out.println(Character.isDigit(ch)); System.out.println(Character.isUpperCase(ch)); System.out.println(Character.isLowerCase(ch)); System.out.println(Character.isWhitespace(' ')); } }
|
🔹 字符转换的方法
这些方法用于对字符进行大小写、数字等转换。
1 2 3 4 5 6 7 8 9 10
| public class CharacterConversionExample { public static void main(String[] args) { char ch = 'a';
System.out.println(Character.toUpperCase(ch)); System.out.println(Character.toLowerCase('Z')); System.out.println(Character.forDigit(9, 10)); System.out.println(Character.digit('8', 10)); } }
|
🔹 判断字符 Unicode 编码范围
1 2 3 4 5 6 7 8 9
| public class UnicodeCheckExample { public static void main(String[] args) { char ch = '中';
System.out.println(Character.UnicodeBlock.of(ch)); System.out.println(Character.isSurrogate(ch)); System.out.println(Character.charCount(ch)); } }
|
3️⃣ Character 类的静态常量
Character
类中定义了一些有用的字符类型常量:
1 2 3 4
| System.out.println(Character.MIN_VALUE); System.out.println(Character.MAX_VALUE); System.out.println(Character.MIN_RADIX); System.out.println(Character.MAX_RADIX);
|
4️⃣ 自动装箱与拆箱
Java 提供了自动装箱(autoboxing)和自动拆箱(unboxing),可以让基本类型 char
和包装类 Character
相互转换。
1 2 3 4 5 6 7 8 9 10 11 12
| public class AutoboxingExample { public static void main(String[] args) { Character character = 'A';
char ch = character;
System.out.println(character); System.out.println(ch); } }
|
5️⃣ 字符比较
🔹 使用 equals()
方法比较对象
包装类比较不能直接用 ==
,要用 .equals()
。
1 2 3 4 5
| Character ch1 = 'A'; Character ch2 = 'A';
System.out.println(ch1.equals(ch2)); System.out.println(ch1 == ch2);
|
6️⃣ 综合例子
需求:判断一个字符是数字、字母还是其他,并将字母统一转换为大写。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import java.util.Scanner;
public class CharacterTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个字符:"); char input = scanner.next().charAt(0);
if (Character.isDigit(input)) { System.out.println(input + " 是一个数字"); } else if (Character.isLetter(input)) { System.out.println(input + " 是一个字母,转换为大写:" + Character.toUpperCase(input)); } else { System.out.println(input + " 是一个其他字符"); } } }
|
示例输出:
1 2
| 请输入一个字符:a a 是一个字母,转换为大写:A
|
7️⃣ 小技巧 & 注意事项
Character
类的对象是不可变的。一旦创建,就不能更改其值。
- 字符比较推荐用
equals()
,不要直接用 ==
,避免对象引用问题。
Character
类非常适合字符校验、转换、处理 Unicode 字符。
方法表格
Character
类是 Java 中用于处理单个字符的包装类,提供了许多实用方法来判断、转换和操作字符。我们来总结一下它的重要方法!💡
🔍 判断类方法(返回布尔值)
方法 |
功能说明 |
示例 |
isLetter(char ch) |
判断是否为字母 |
Character.isLetter('A') → true |
isDigit(char ch) |
判断是否为数字 |
Character.isDigit('8') → true |
isLetterOrDigit(char ch) |
判断是否为字母或数字 |
Character.isLetterOrDigit('$') → false |
isWhitespace(char ch) |
判断是否为空白字符 |
Character.isWhitespace(' ') → true |
isUpperCase(char ch) |
判断是否为大写字母 |
Character.isUpperCase('A') → true |
isLowerCase(char ch) |
判断是否为小写字母 |
Character.isLowerCase('a') → true |
isJavaIdentifierStart(char ch) |
判断字符是否可以作为 Java 标识符开头 |
Character.isJavaIdentifierStart('_') → true |
isJavaIdentifierPart(char ch) |
判断字符是否可以作为 Java 标识符的一部分 |
Character.isJavaIdentifierPart('1') → true |
🔄 转换类方法
方法 |
功能说明 |
示例 |
toUpperCase(char ch) |
转换为大写字母 |
Character.toUpperCase('a') → 'A' |
toLowerCase(char ch) |
转换为小写字母 |
Character.toLowerCase('A') → 'a' |
toString(char ch) |
将字符转换为字符串 |
Character.toString('J') → "J" |
💡 获取类方法
方法 |
功能说明 |
示例 |
getType(char ch) |
获取字符的类型(如字母、数字等) |
Character.getType('A') → 1 (代表字母) |
getNumericValue(char ch) |
获取字符的数值(如数字字符的数值) |
Character.getNumericValue('8') → 8 |
charCount(int codePoint) |
判断 Unicode 字符是否需要一个或两个 char 单元表示 |
Character.charCount(65) → 1 |
toChars(int codePoint) |
将 Unicode 代码点转换为字符数组 |
Character.toChars(65) → ['A'] |
🧠 特殊方法
方法 |
功能说明 |
示例 |
compare(char x, char y) |
比较两个字符大小 |
Character.compare('A', 'B') → -1 |
hashCode(char ch) |
获取字符的哈希码 |
Character.hashCode('J') → 74 |
valueOf(char ch) |
将字符转换为 Character 对象 |
Character.valueOf('J') → 'J' (对象) |
8️⃣ 练习题
🧠 问题 1:判断一个输入字符是否是英文字母,并转换为相反大小写(大写转小写,小写转大写)。
1 2 3 4 5 6 7 8 9 10 11 12
| import java.util.Scanner; public class Charrr { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.print("请输入一个字符:"); char input = scanner.next().charAt(0); char result = (Character.isLetter(input)) ? (Character.isUpperCase(input)) ? Character.toLowerCase(input) : Character.toUpperCase(input) : '否'; System.out.print(result);
} }
|
🧠 问题 2:编写一个方法,统计字符串中数字、字母和其他字符的个数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import java.util.Scanner;
public class Count { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.print("请输入字符串:"); String input = scanner.nextLine(); int number_ = 0, character_ = 0, space = 0; for(int i = 0;i < input.length();i++){ char CureentChar = input.charAt(i); if (Character.isDigit(CureentChar)){ number_++; } else if (Character.isLetter(CureentChar)) { character_++; } else if (Character.isSpaceChar(CureentChar)) { space++;
} } System.out.println( "字符的数量是: " + character_ ); System.out.println("数字的数量是: " + number_); System.out.println("空白字符的数量是: " + space);
} }
|
1 2 3 4
| 请输入字符串:sdffffff 4444 """""" ;[ 字符的数量是: 8 数字的数量是: 4 空白字符的数量是: 3
|
🧠 问题 3:将一个字符数组中的所有小写字母转为大写字母。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import java.util.Scanner; public class ReplaceUS { public static void main(String[] args){ System.out.println("请输入字字符串"); Scanner scan = new Scanner(System.in); StringBuilder input = new StringBuilder(scan.nextLine()); for (int i = 0;i < input.length();i++){ if (Character.isLowerCase(input.charAt(i))){ char rp = Character.toUpperCase(input.charAt(i)); input.replace(i,i+1,String.valueOf(rp));
} } System.out.println("转换后的字符串是:" + input); scan.close(); } }
|
1 2 3
| 请输入字字符串 fadsfsagFFFF;;;79779 转换后的字符串是:FADSFSAGFFFF;;;79779
|
注意,replace(int start, int end, String str)
接受String str
类,需要使用String.valueOf(char)
进行类型转换后再传参。
学会 Character
类,你就可以在字符处理、校验和转换中游刃有余啦!💡 有问题或练习需要解答,欢迎告诉我!💬🌱