Java Character 类
JavaCharacter类学习笔记详细版在 Java 中Character类是基本数据类型char的包装类Wrapper Class。它位于java.lang包中提供了大量用于判断字符属性如是否为字母、数字、空格等以及转换字符大小写的静态方法。一、概述类名java.lang.Character作用将char基本类型封装为对象用于集合、泛型等场景。提供丰富的静态工具方法用于字符分类判断和转换。不可变性Character对象一旦创建其值不可修改。自动装箱/拆箱Java 5 支持char与Character之间的自动转换。// 自动装箱CharactercA;// 自动拆箱charchc;二、字符分类判断方法 (Is… Methods)这是Character类最常用的功能所有方法都返回boolean类型。方法描述示例结果isLetter(char ch)判断是否为字母(A-Z, a-z, 中文等)isLetter(A)isLetter(中)truetrueisDigit(char ch)判断是否为数字(0-9)isDigit(5)isDigit(五)truefalseisLetterOrDigit(char ch)判断是否为字母或数字isLetterOrDigit(a)isLetterOrDigit(1)truetrueisWhitespace(char ch)判断是否为空白字符(空格,\t,\n,\r等)isWhitespace( )isWhitespace(\n)truetrueisUpperCase(char ch)判断是否为大写字母isUpperCase(A)isUpperCase(a)truefalseisLowerCase(char ch)判断是否为小写字母isLowerCase(a)isLowerCase(A)truefalseisSpaceChar(char ch)判断是否为Unicode 空格字符(比isWhitespace更严格)isSpaceChar( )trueisISOControl(char ch)判断是否为ISO 控制字符(ASCII 0-31, 127)isISOControl(\n)trueisDefined(char ch)判断字符是否在 Unicode 中已定义isDefined(A)true代码示例字符验证publicclassCharCheck{publicstaticvoidmain(String[]args){charch1A;charch25;charch3中;charch4 ;charch5\t;System.out.println(A 是字母吗 Character.isLetter(ch1));// trueSystem.out.println(5 是数字吗 Character.isDigit(ch2));// trueSystem.out.println(中 是字母吗 Character.isLetter(ch3));// true (支持中文)System.out.println(空格是空白吗 Character.isWhitespace(ch4));// trueSystem.out.println(制表符是空白吗 Character.isWhitespace(ch5));// trueSystem.out.println(A 是大写吗 Character.isUpperCase(ch1));// trueSystem.out.println(A 是小写吗 Character.isLowerCase(ch1));// false}}三、字符转换方法1. 大小写转换方法描述示例结果toUpperCase(char ch)转换为大写toUpperCase(a)AtoLowerCase(char ch)转换为小写toLowerCase(B)btoUpperCase(char ch, int locale)指定语言环境转换大写--toLowerCase(char ch, int locale)指定语言环境转换小写--注意如果字符没有大小写之分如数字、中文、符号返回原字符。对于某些特殊语言如土耳其语大小写转换规则不同建议使用带locale参数的方法。charlowerZ;charupperm;System.out.println(Character.toUpperCase(lower));// ZSystem.out.println(Character.toLowerCase(upper));// mSystem.out.println(Character.toUpperCase(1));// 1 (不变)2. 其他转换方法描述示例digit(char ch, int radix)将字符转换为指定进制下的数值digit(A, 16)→10forDigit(int digit, int radix)将数值转换为指定进制下的字符forDigit(10, 16)→acharValue()返回char基本类型值new Character(A).charValue()→A进制转换示例// 十六进制 F 对应的数值intvalCharacter.digit(F,16);// 15// 数值 10 对应的十六进制字符charhexCharCharacter.forDigit(10,16);// a四、Unicode 相关方法Java 的char类型基于UTF-16编码可以表示 Unicode 字符。方法描述示例charValue()获取字符值-codePointAt(char[] a, int index)获取指定索引处的 Unicode 码点处理代理对 (Surrogate Pairs)charCount(int codePoint)返回表示该码点所需的char数量辅助处理代理对isSurrogate(char ch)判断是否为代理字符-isHighSurrogate(char ch)判断是否为高代理字符-isLowSurrogate(char ch)判断是否为低代理字符-背景知识基本多文种平面 (BMP) 的字符占用 1 个char(0x0000 - 0xFFFF)。辅助平面 (Supplementary Planes) 的字符如部分 emoji、生僻汉字占用 2 个char代理对。处理这些字符时建议使用codePointAt和codePointBefore等高级方法。五、常量与属性Character类定义了一些常用常量常量描述值MIN_VALUEchar的最小值\u0000(0)MAX_VALUEchar的最大值\uffff(65535)SIZEchar的位数16BYTESchar的字节数2六、实战案例1. 统计字符串中的字母、数字和空格publicclassCharStats{publicstaticvoidmain(String[]args){StringstrHello World 123!;intletters0;intdigits0;intspaces0;intothers0;for(inti0;istr.length();i){charchstr.charAt(i);if(Character.isLetter(ch)){letters;}elseif(Character.isDigit(ch)){digits;}elseif(Character.isWhitespace(ch)){spaces;}else{others;}}System.out.println(字母数letters);// 10System.out.println(数字数digits);// 3System.out.println(空格数spaces);// 2System.out.println(其他字符others);// 1 (!)}}2. 密码强度检查publicclassPasswordCheck{publicstaticbooleanisStrongPassword(Stringpassword){if(password.length()8)returnfalse;booleanhasUpperfalse;booleanhasLowerfalse;booleanhasDigitfalse;booleanhasSpecialfalse;for(charch:password.toCharArray()){if(Character.isUpperCase(ch))hasUppertrue;elseif(Character.isLowerCase(ch))hasLowertrue;elseif(Character.isDigit(ch))hasDigittrue;elseif(!Character.isLetterOrDigit(ch)!Character.isWhitespace(ch)){hasSpecialtrue;}}returnhasUpperhasLowerhasDigithasSpecial;}publicstaticvoidmain(String[]args){System.out.println(isStrongPassword(Abc123!));// trueSystem.out.println(isStrongPassword(abc123));// false (缺大写和特殊)}}3. 字符串大小写转换StringstrHeLLo WoRLd;Stringupperstr.toUpperCase();// 使用 String 方法底层调用 Character.toUpperCaseStringlowerstr.toLowerCase();// 或者手动遍历StringBuildersbnewStringBuilder();for(charch:str.toCharArray()){if(Character.isUpperCase(ch)){sb.append(Character.toLowerCase(ch));}else{sb.append(Character.toUpperCase(ch));}}System.out.println(sb.toString());// hEllO wOrld七、常见易错点与注意事项1.isWhitespacevsisSpaceCharisWhitespace包括空格、制表符 (\t)、换行符 (\n)、回车符 (\r) 等所有空白字符。isSpaceChar仅指 Unicode 定义的“空格字符”如普通空格 不包括控制字符如\t,\n。System.out.println(Character.isWhitespace(\n));// trueSystem.out.println(Character.isSpaceChar(\n));// false2. 中文支持isLetter和isDigit完全支持中文。System.out.println(Character.isLetter(中));// trueSystem.out.println(Character.isDigit(五));// false (中文数字不是 Unicode 数字)3. 包装类对象比较不要使用比较两个Character对象应使用.equals()或拆箱后比较。Characterc1newCharacter(A);Characterc2newCharacter(A);System.out.println(c1c2);// false (地址不同)System.out.println(c1.equals(c2));// true (内容相同)缓存机制Character对0到127(ASCII 范围) 的值进行了缓存类似Integer。Characterc3A;// 自动装箱使用缓存Characterc4A;System.out.println(c3c4);// true (因为都在缓存范围内)4. 空字符\0\0是空字符值为 0isLetter和isDigit均返回false。八、总结速查表功能分类核心方法关键点判断字母isLetter,isUpperCase,isLowerCase支持中文判断数字isDigit仅 0-9不支持中文数字判断空白isWhitespace,isSpaceChar前者包含\t,\n大小写转换toUpperCase,toLowerCase无大小写字符返回原值进制转换digit,forDigit支持 2-36 进制包装类charValue,valueOf支持自动装箱/拆箱核心原则字符处理首选使用Character类的静态方法代码简洁且语义清晰。中文处理isLetter完美支持中文无需额外处理。对象比较优先使用equals()或拆箱避免陷阱。空白判断根据需求选择isWhitespace(通用) 或isSpaceChar(严格空格)。掌握Character类能让你在处理字符串、解析输入、验证数据时更加得心应手