Java 字符
Java - Character 类
Section titled “Java - Character 类”在 Java 中,单个字符通常使用原始数据类型(primitive data type)char 来表示。
使用原始类型 char:
Section titled “使用原始类型 char:”char grade = 'A';char firstInitial = 'J';char punctuation = '.';
// char 代表 Unicode 字符。// 你可以使用 Unicode 转义序列:char greekOmega = '\u03A9'; // 大写希腊字母 Omega (Ω)char copyrightSymbol = '\u00A9'; // 版权符号 (©)
// char 可以存储在数组中:char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
System.out.println("Grade: " + grade);System.out.println("Omega: " + greekOmega);System.out.println("First vowel: " + vowels[0]);Character 包装类
Section titled “Character 包装类”虽然 char 原始类型效率很高,但在某些情况下,你需要将字符视为对象(object)。这在使用 Java 集合(Collections)(例如 ArrayList<Character>)或某个方法需要对象时很常见。
Java 提供了 java.lang.Character 类,它是原始类型 char 的包装类(wrapper class)。它允许你将一个字符值视为一个对象。
自动装箱与拆箱:
Java 会在需要时自动在 char 原始类型和 Character 对象之间进行转换。这个过程称为自动装箱(autoboxing)(原始类型到包装类)和拆箱(unboxing)(包装类到原始类型)。
// 自动装箱:原始类型 char 'a' 自动转换为 Character 对象Character charObject = 'a';
// 拆箱:Character 对象自动转换为原始类型 charchar primitiveChar = charObject;
// 方法期望接收 Object 类型的示例:ArrayList<Character> charList = new ArrayList<>();charList.add('x'); // 自动装箱:'x' 在添加前转换为 Character 对象char retrievedChar = charList.get(0); // 拆箱:取出的 Character 对象转换为 'x'虽然你可以通过 new Character(‘c’) 显式地创建 Character 对象,但由于自动装箱的存在,这通常是不必要的,而且通常不被鼓励(并且在未来的 Java 版本中已标记为过时)。请依赖自动装箱。
Character 类的常用静态方法
Section titled “Character 类的常用静态方法”Character 类提供了许多用于处理字符的实用静态方法:
| 方法签名 | 描述 |
|---|---|
Character.isLetter(char ch) | 检查字符是否为字母。 |
Character.isDigit(char ch) | 检查字符是否为数字 (0-9)。 |
Character.isLetterOrDigit(char ch) | 检查字符是否为字母或数字。 |
Character.isWhitespace(char ch) | 检查字符是否为空白字符(根据 Java 的定义,包括空格、制表符、换行符等)。 |
Character.isUpperCase(char ch) | 检查字符是否为大写字母。 |
Character.isLowerCase(char ch) | 检查字符是否为小写字母。 |
Character.toUpperCase(char ch) | 将字符转换为其大写等效字符(如果存在)。 |
Character.toLowerCase(char ch) | 将字符转换为其小写等效字符(如果存在)。 |
Character.toString(char ch) | 将字符转换为仅包含该字符的 String。(等同于 String.valueOf(ch))。 |
Character.getNumericValue(char ch) | 返回字符表示的整数值(例如,‘5’ -> 5)。如果不是有效的非负整数则返回 -1,如果不是数字字符则返回 -2。 |
使用静态方法的示例:
public class CharacterMethodsDemo { public static void main(String[] args) { char ch1 = 'a'; char ch2 = '7'; char ch3 = ' '; // 空格 char ch4 = 'Z';
System.out.println("'" + ch1 + "' is letter? " + Character.isLetter(ch1)); // true System.out.println("'" + ch2 + "' is digit? " + Character.isDigit(ch2)); // true System.out.println("'" + ch3 + "' is whitespace? " + Character.isWhitespace(ch3)); // true System.out.println("'" + ch4 + "' is uppercase? " + Character.isUpperCase(ch4)); // true System.out.println("'" + ch1 + "' to uppercase: " + Character.toUpperCase(ch1)); // A System.out.println("'" + ch4 + "' to lowercase: " + Character.toLowerCase(ch4)); // z System.out.println("Numeric value of '" + ch2 + "': " + Character.getNumericValue(ch2)); // 7 }}在字符字面量或字符串字面量中,某些字符在前面加上反斜杠 (</code>) 时具有特殊含义。这些被称为转义序列(escape sequences)。
常用转义序列:
转义序列 描述 \t插入一个水平制表符。 \b插入一个退格符(很少使用,效果取决于终端)。 \n插入一个换行符。 \r插入一个回车符。 \f插入一个换页符(很少使用)。 ‘插入一个单引号字符(在单引号内需要转义:char quote = ''';)。 “插入一个双引号字符(在双引号内需要转义:String quoted = “He said “Hi!"";)。 \插入一个反斜杠字符本身。
示例:
public class EscapeSequenceDemo { public static void main(String[] args) { // 在 String 中使用转义序列 System.out.println("Column A\tColumn B"); // 制表符分隔 System.out.println("Line 1\nLine 2"); // 换行 System.out.println("She said: \"Hello!\""); // 字符串中的双引号 System.out.println("This is a backslash: \\"); // 字面反斜杠
// 在 char 字面量中使用转义序列 char singleQuote = '\''; System.out.println("Single quote character: " + singleQuote); }}
预期输出:
Column A Column BLine 1Line 2She said: "Hello!"This is a backslash: \Single quote character: '
下一步是什么?
Section titled “下一步是什么?”
理解字符对于处理文本至关重要。下一节将更详细地探讨 String 类,它代表字符序列,是 Java 中最常用的类之一。