Java.lang.Character类
Character将一个char基本数据类型封装在类中。这个类中只有一char类型的变量。Character是基于unicode码进行的Character所有的方法,都是围绕着这个char基本数据类型的值进行操作的。
ASCII控制字符
| 二进制 | 十进制 | 十六进制 | 缩写 | 可以显示的表示法 | 名称/意义 |
|---|---|---|---|---|---|
| 0000 0000 | 0 | 00 | NUL | ␀ | 空字符(Null) |
| 0000 0001 | 1 | 01 | SOH | ␁ | 标题开始 |
| 0000 0010 | 2 | 02 | STX | ␂ | 本文开始 |
| 0000 0011 | 3 | 03 | ETX | ␃ | 本文结束 |
| 0000 0100 | 4 | 04 | EOT | ␄ | 传输结束 |
| 0000 0101 | 5 | 05 | ENQ | ␅ | 请求 |
| 0000 0110 | 6 | 06 | ACK | ␆ | 确认回应 |
| 0000 0111 | 7 | 07 | BEL | ␇ | 响铃 |
| 0000 1000 | 8 | 08 | BS | ␈ | 退格 |
| 0000 1001 | 9 | 09 | HT | ␉ | 水平定位符号 |
| 0000 1010 | 10 | 0A | LF | ␊ | 换行键 |
| 0000 1011 | 11 | 0B | VT | ␋ | 垂直定位符号 |
| 0000 1100 | 12 | 0C | FF | ␌ | 换页键 |
| 0000 1101 | 13 | 0D | CR | ␍ | 归位键 |
| 0000 1110 | 14 | 0E | SO | ␎ | 取消变换(Shift out) |
| 0000 1111 | 15 | 0F | SI | ␏ | 启用变换(Shift in) |
| 0001 0000 | 16 | 10 | DLE | ␐ | 跳出数据通讯 |
| 0001 0001 | 17 | 11 | DC1 | ␑ | 设备控制一(XON 启用软件速度控制) |
| 0001 0010 | 18 | 12 | DC2 | ␒ | 设备控制二 |
| 0001 0011 | 19 | 13 | DC3 | ␓ | 设备控制三(XOFF 停用软件速度控制) |
| 0001 0100 | 20 | 14 | DC4 | ␔ | 设备控制四 |
| 0001 0101 | 21 | 15 | NAK | ␕ | 确认失败回应 |
| 0001 0110 | 22 | 16 | SYN | ␖ | 同步用暂停 |
| 0001 0111 | 23 | 17 | ETB | ␗ | 区块传输结束 |
| 0001 1000 | 24 | 18 | CAN | ␘ | 取消 |
| 0001 1001 | 25 | 19 | EM | ␙ | 连接介质中断 |
| 0001 1010 | 26 | 1A | SUB | ␚ | 替换 |
| 0001 1011 | 27 | 1B | ESC | ␛ | 跳出 |
| 0001 1100 | 28 | 1C | FS | ␜ | 文件分割符 |
| 0001 1101 | 29 | 1D | GS | ␝ | 组群分隔符 |
| 0001 1110 | 30 | 1E | RS | ␞ | 记录分隔符 |
| 0001 1111 | 31 | 1F | US | ␟ | 单元分隔符 |
| 0111 1111 | 127 | 7F | DEL | ␡ | 删除 |
ASCII可显示字符
|
|
|
java中,char类型变量可以强制转化为int类型变量,int类型变量也可以强制转化成char类型的变量:
- char c='a';
- int i=98;
- System.out.println((int)c);
- System.out.println((char)i);
对于数组类型,其下标为int类型,所以可以直接使用char类型变量,默认强制转换:
- int[] array=new int[100];
- for(int i=0;i<array.length;i++){
- array[i]=i;
- }
- char c='a';
- System.out.println(array[c]);
package sms.rey.cn;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class CharacterDemo {
// 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
@SuppressWarnings("unused")
public static void main(String[] args) throws Exception {
int letterSum = 0;
int blankSum = 0;
int numberSum = 0;
int otherSum = 0;
BufferedReader bufr = new BufferedReader(new InputStreamReader(
System.in));
String line = bufr.readLine();
char[] ch = line.toCharArray();//String的方法,讲输入的字符串转换成字符数组
TotalChar(ch, otherSum, otherSum, otherSum, otherSum);
}
public static void TotalChar(char[] ch, int letterSum, int blankSum,
int numberSum, int otherSum) {
// 遍历字符数组
for (int i = 0; i < ch.length; i++) {
if (Character.isDigit(ch[i])) {
numberSum++;
} else if (Character.isSpaceChar(ch[i])) {
blankSum++;
} else if (Character.isLetter(ch[i])) {
letterSum++;
} else {
otherSum++;
}
}
System.out.println("输入的字符串中共有空格:" + blankSum);
System.out.println("输入的字符串中共有字母:" + letterSum);
System.out.println("输入的字符串中共有其他字符:" + otherSum);
System.out.println("输入的字符串中共有数字:" + numberSum);
}
}
下面列出的是Character的其他方法,仅提供参考:
// Character类将一个char基本数据类型封装在类中。这个类中只有一char类型的变量。Character是基于unicode码进行的
// Character所有的方法,都是围绕着这个char基本数据类型的值进行操作的。
Character c = new Character('我');
char cc = 'a';
// 将一个char基本数据类型的数据封装成一个Character类型的对象
System.out.println(Character.valueOf('a')); // 返回封装在Character类中的char基本数据类型的变量的值。也可理解为将Character对象转化成一个char基本数据类型的值
System.out.println(c.charValue()); // 获取Character类中封装的char基本数据类型变量的hash码值。也可理解为获得Character对象的hash码值,从源码看就是返回强制转换为int类型后的值。
System.out.println("hashcode:" + c.hashCode()); // 判断参数中的字符是否为为候补码,也就是说字符转化为数字后是否大于等于65535,如果参数直接为数字,那就看数字是否大于等于65535,是的话返回2,否则返回1
// 字符在计算机中都是用数字表示的,一个char类型占16位二进制,转成十进制后可以表示65536种字符,也就是说每个字符都可以用一个数字表示,当这数字大于65535说明
// 这个字符为扩充候补字符。
System.out.println(Character.charCount('我')); // 比较类型和值是否都相同
System.out.println(c.equals(123));
System.out.println(Character.codePointAt("意大利", 2));
char[] c1 = { 'a', 'b', 'c' };
System.out.println(Character.codePointAt(c1, 1));
// 获取指定位置字符的代码点。第二个参数的值一定要小于第三个参数,否则异常
System.out.println(Character.codePointAt(c1, 0, 1));
// 将一个代码点转化为字符
System.out.println(Character.toChars(21033)); System.out.println(Character.offsetByCodePoints("abc", 1, 1));
// 判断是否为小写字母
System.out.println("isLowerCase: " + Character.isLowerCase('a'));
// 通过codepoint来判断是否为小写字母
System.out.println("isLowerCase: " + Character.isLowerCase(65));
// 判断是否为低位代理
System.out.println(Character.isLowSurrogate('a'));
// 判断是否为大写字母
System.out.println("isUpperCase: " + Character.isUpperCase('A'));
// 通过codepoint来判断是否为大写字母
System.out.println("isUpperCase: " + Character.isUpperCase(97));
// 判断字符是否为数字
System.out.println(Character.isDigit('\u0030'));
// 通过codepoint来判断是否为数字
System.out.println(Character.isDigit(123)); // 判断字符有没有对应的unicode形式,就是通过unicode中是否定义了字符的unicode写法
System.out.println("isDefined: " + Character.isDefined('!'));
System.out.println(Character.isDefined(123));
// 判断字符或者codepoint是否为字母
System.out.println("isLetter: " + Character.isLetter('a'));
System.out.println("isLetter: " + Character.isLetter(65));
// 判断是否为字母(26个字符)或者数字
System.out.print(Character.isLetterOrDigit('j'));
System.out.print(Character.isLetterOrDigit(1234));
// 是否为合法java变量名要求的能用于开头的字符(数字,字母下划线和$)
System.out.println("isJavaLetter:" + Character.isJavaLetter('_'));
// 功能同上,用于代替isJavaLetter方法
System.out.println("isJavaIdentifierStart: "
+ Character.isJavaIdentifierStart('@'));
System.out.println("isJavaIdentifierStart: "
+ Character.isJavaIdentifierStart(123)); // 判断是否为一个合法的java变量所包含的字符
System.out.println("isJavaIdentifierPart: "
+ Character.isJavaIdentifierPart('$')); // java7中的方法。判断字符是否为形意字。比如中国字,日本字
// System.out.println(Character.isIdeographic('我'));
// 小写字母或者用小写字母的codepoint转大写
System.out.println("toLowerCase:" + Character.toLowerCase('A'));
System.out.println("toLowerCase:" + Character.toLowerCase(65)); // 大写字母或者用大写字母的codepoint转小写
System.out.println("toLowerCase:" + Character.toUpperCase('a'));
System.out.println("toLowerCase:" + Character.toUpperCase(97));
Java.lang.Character类的更多相关文章
- java.lang.String 类的所有方法
java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...
- java.lang.String 类源码解读
String类定义实现了java.io.Serializable, Comparable<String>, CharSequence 三个接口:并且为final修饰. public fin ...
- java.lang.Byte 类源码浅析
Byte 类字节,属于Number. public final class Byte extends Number implements Comparable<Byte> { /** * ...
- java.lang.Long 类源码解读
总体阅读了Long的源码,基本跟Integer类类似,所以特别全部贴出源码,直接注释进行理解. // final修饰符 public final class Long extends Number i ...
- 浅析Java.lang.ProcessBuilder类
最近由于工作需要把用户配置的Hive命令在Linux环境下执行,专门做了一个用户管理界面特地研究了这个不经常用得ProcessBuilder类.所以把自己的学习的资料总结一下. 一.概述 P ...
- 浅析Java.lang.Process类
一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序). Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的 ...
- 深入研究java.lang.ProcessBuilder类
深入研究java.lang.ProcessBuilder类 一.概述 ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它 ...
- 深入研究java.lang.Process类
一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序). Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态 ...
- Java 线程--继承java.lang.Thread类实现线程
现实生活中的很多事情是同时进行的,Java中为了模拟这种状态,引入了线程机制.先来看线程的基本概念. 线程是指进程中的一个执行场景,也就是执行流程,进程和线程的区别: 1.每个进程是一个应用程序,都有 ...
随机推荐
- 解决Javascript中$(window).resize()多次执行
有些时候,我们需要在浏览器窗口发生变化的时候,动态的执行一些操作,比如做自适应页面时的适配.这个时候,我们需要在窗口拖动的时候去执行代码.但是有些时候,执行的操作比较复杂,我们只希望在窗口拖动完毕之后 ...
- app中页面滑动,防止a链接误触
问题 app中list列表,当我们用手滑动屏幕,屏幕上页面内容会快速滚动,不会因为手已经离开了屏幕而滚动停止,突然手触摸暂停,当手指是在a标签上面时,会跳转链接,这对客户体验及其不好 思路 先判断滚动 ...
- bzoj 1064 noi2008 假面舞会题解
莫名其妙的变成了我们的noip互测题... 其实这题思想还是比较简单的,只是分类不好分而已 其实就是一个dfs的事 首先,非常明显,原题目中的所有关系可以抽象成一个图(这是...显而易见的吧...) ...
- pytest十一:函数传参和 firture 传参数 request
为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数.比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登录函数就行.但是登录 ...
- javascript如何从tr中分别获得每个td的元素
<html> <body> <table border="1" id="table1"> <tr id="r ...
- (转载)关于一些对location认识的误区
原文:https://www.cnblogs.com/lidabo/p/4169396.html 关于一些对location认识的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. ...
- .NetCore源码阅读笔记系列之Security (四) Authentication & AddJwtBearer
接下来我们在来看下AddJwtBearer,这个与AddOpenIdConnect不太一样,后者是远程发起身份认证请求是一种主动发起式的,多用于web等客户端,验证发生在身份认证服务端,而前者是一种被 ...
- OPENJDK 源码编译
一.整体编译 我的环境: Ubuntu 16.04 LTS apache-ant-1.8.0-bin.zip 环境变量: export LANG=C export ALT_BOOTDIR=/home/ ...
- [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)
一. 单线程 我们常说“JavaScript是单线程的”. 所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个.不妨叫它主线程. 但是实际上还存在其他的线程.例如:处理A ...
- POJ 2395 Out of Hay (Kruskal)
题意:从待选的路里面选出若干将所有点连通,求选出的边里最长边的最小值. 算法:要使得树的最长边最小,那么每次确定的边都应是待选边里最小的,即最小生成树.对应Kruskal算法. #include &l ...