Java.lang.Character类学习

本文介绍如何使用Java中的Character类统计输入字符串中的字母、空格、数字和其他字符,并详细解释Character类的各种方法,包括封装字符、获取字符值、哈希码、判断字符属性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

   通过上述的问题来学习下Character类。Character将一个char基本数据类型封装在类中。这个类中只有一char类型的变量。Character是基于unicode码进行的Character所有的方法,都是围绕着这个char基本数据类型的值进行操作的。 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itheima;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.InputStreamReader;  
  5.   
  6. public class CharacterDemo {  
  7.     // 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。  
  8.     @SuppressWarnings("unused")  
  9.     public static void main(String[] args) throws Exception {  
  10.         int letterSum = 0;  
  11.         int blankSum = 0;  
  12.         int numberSum = 0;  
  13.         int otherSum = 0;  
  14.         BufferedReader bufr = new BufferedReader(new InputStreamReader(  
  15.                 System.in));  
  16.         String line = bufr.readLine();  
  17.         char[] ch = line.toCharArray();//String的方法,讲输入的字符串转换成字符数组  
  18.         TotalChar(ch, otherSum, otherSum, otherSum, otherSum);  
  19.     }  
  20.   
  21.     public static void TotalChar(char[] ch, int letterSum, int blankSum,  
  22.             int numberSum, int otherSum) {  
  23.         // 遍历字符数组  
  24.         for (int i = 0; i < ch.length; i++) {  
  25.             if (Character.isDigit(ch[i])) {  
  26.                 numberSum++;  
  27.             } else if (Character.isSpaceChar(ch[i])) {  
  28.                 blankSum++;  
  29.             } else if (Character.isLetter(ch[i])) {  
  30.                 letterSum++;  
  31.             } else {  
  32.                 otherSum++;  
  33.             }  
  34.         }  
  35.         System.out.println("输入的字符串中共有空格:" + blankSum);  
  36.         System.out.println("输入的字符串中共有字母:" + letterSum);  
  37.         System.out.println("输入的字符串中共有其他字符:" + otherSum);  
  38.         System.out.println("输入的字符串中共有数字:" + numberSum);  
  39.     }  
  40. }  

下面列出的是Character的其他方法,仅提供参考:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. // Character类将一个char基本数据类型封装在类中。这个类中只有一char类型的变量。Character是基于unicode码进行的  
  2. // Character所有的方法,都是围绕着这个char基本数据类型的值进行操作的。  
  3. Character c = new Character('我');  
  4. char cc = 'a';  
  5. // 将一个char基本数据类型的数据封装成一个Character类型的对象  
  6. System.out.println(Character.valueOf('a'));  
  7.   
  8. // 返回封装在Character类中的char基本数据类型的变量的值。也可理解为将Character对象转化成一个char基本数据类型的值  
  9. System.out.println(c.charValue());  
  10.   
  11. // 获取Character类中封装的char基本数据类型变量的hash码值。也可理解为获得Character对象的hash码值,从源码看就是返回强制转换为int类型后的值。  
  12. System.out.println("hashcode:" + c.hashCode());  
  13.   
  14. // 判断参数中的字符是否为为候补码,也就是说字符转化为数字后是否大于等于65535,如果参数直接为数字,那就看数字是否大于等于65535,是的话返回2,否则返回1  
  15. // 字符在计算机中都是用数字表示的,一个char类型占16位二进制,转成十进制后可以表示65536种字符,也就是说每个字符都可以用一个数字表示,当这数字大于65535说明  
  16. // 这个字符为扩充候补字符。  
  17. System.out.println(Character.charCount('我'));  
  18.   
  19. // 比较类型和值是否都相同  
  20. System.out.println(c.equals(123));  
  21. System.out.println(Character.codePointAt("意大利"2));  
  22. char[] c1 = { 'a''b''c' };  
  23. System.out.println(Character.codePointAt(c1, 1));  
  24. // 获取指定位置字符的代码点。第二个参数的值一定要小于第三个参数,否则异常  
  25. System.out.println(Character.codePointAt(c1, 01));  
  26. // 将一个代码点转化为字符  
  27. System.out.println(Character.toChars(21033));  
  28.   
  29. System.out.println(Character.offsetByCodePoints("abc"11));  
  30. // 判断是否为小写字母  
  31. System.out.println("isLowerCase: " + Character.isLowerCase('a'));  
  32. // 通过codepoint来判断是否为小写字母  
  33. System.out.println("isLowerCase: " + Character.isLowerCase(65));  
  34. // 判断是否为低位代理  
  35. System.out.println(Character.isLowSurrogate('a'));  
  36. // 判断是否为大写字母  
  37. System.out.println("isUpperCase: " + Character.isUpperCase('A'));  
  38. // 通过codepoint来判断是否为大写字母  
  39. System.out.println("isUpperCase: " + Character.isUpperCase(97));  
  40. // 判断字符是否为数字  
  41. System.out.println(Character.isDigit('\u0030'));  
  42. // 通过codepoint来判断是否为数字  
  43. System.out.println(Character.isDigit(123));  
  44.   
  45. // 判断字符有没有对应的unicode形式,就是通过unicode中是否定义了字符的unicode写法  
  46. System.out.println("isDefined: " + Character.isDefined('!'));  
  47. System.out.println(Character.isDefined(123));  
  48. // 判断字符或者codepoint是否为字母  
  49. System.out.println("isLetter: " + Character.isLetter('a'));  
  50. System.out.println("isLetter: " + Character.isLetter(65));  
  51. // 判断是否为字母(26个字符)或者数字  
  52. System.out.print(Character.isLetterOrDigit('j'));  
  53. System.out.print(Character.isLetterOrDigit(1234));  
  54. // 是否为合法java变量名要求的能用于开头的字符(数字,字母下划线和$)  
  55. System.out.println("isJavaLetter:" + Character.isJavaLetter('_'));  
  56. // 功能同上,用于代替isJavaLetter方法  
  57. System.out.println("isJavaIdentifierStart: "  
  58.         + Character.isJavaIdentifierStart('@'));  
  59. System.out.println("isJavaIdentifierStart: "  
  60.         + Character.isJavaIdentifierStart(123));  
  61.   
  62. // 判断是否为一个合法的java变量所包含的字符  
  63. System.out.println("isJavaIdentifierPart: "  
  64.         + Character.isJavaIdentifierPart('$'));  
  65.   
  66. // java7中的方法。判断字符是否为形意字。比如中国字,日本字  
  67. // System.out.println(Character.isIdeographic('我'));  
  68. // 小写字母或者用小写字母的codepoint转大写  
  69. System.out.println("toLowerCase:" + Character.toLowerCase('A'));  
  70. System.out.println("toLowerCase:" + Character.toLowerCase(65));  
  71.   
  72. // 大写字母或者用大写字母的codepoint转小写  
  73. System.out.println("toLowerCase:" + Character.toUpperCase('a'));  
  74. System.out.println("toLowerCase:" + Character.toUpperCase(97));  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值