|
三、ASCII可显示字符
|
|
|
四、代码实例
1、char、int互相转化
/**
* char类型变量可以强制转化为int类型变量,反之亦然
*/
private static void test01() {
char a = 'a';
int b = 98;
System.out.println((int)a);//97
System.out.println((char)b);//b
char c = 'b';
System.out.println("98 == b --> "+ (b == c));//true
}
private static void test02() {
char a = 'a';
int[] arr = new int[100];
for(int i = 0;i<100;i++) {
arr[i] = i;
}
System.out.println(arr[1]);//1
System.out.println(arr[99]);//99
System.out.println((int)a);//97
System.out.println("char自动转为int:"+arr[a]);//97
}
2、 判断是否是数字或字母
**
* 判断是否是数字或字母
*/
private static void test03() {
//数字
System.out.println("Character.isDigit('1') -->"+Character.isDigit('1'));//true
System.out.println("Character.isDigit('a') -->"+Character.isDigit('a'));//false
//空格
System.out.println("Character.isSpaceChar('1') -->"+Character.isSpaceChar('1'));//false
Character.isSpaceChar('a');
System.out.println("Character.isSpaceChar('a') -->"+Character.isSpaceChar('a'));//false
Character.isSpaceChar(' ');
System.out.println("Character.isSpaceChar(' ') -->"+Character.isSpaceChar(' '));//true
//字母
System.out.println("Character.isLetter('1') -->"+Character.isLetter('1'));//false
System.out.println("Character.isLetter('a') -->"+Character.isLetter('a'));//true
System.out.println("Character.isLetter('张') -->"+Character.isLetter('张'));//true, 汉字算字母?
//数字或字母
System.out.println("Character.isLetterOrDigit('1') -->"+Character.isLetterOrDigit('1'));//true
System.out.println("Character.isLetterOrDigit('a') -->"+Character.isLetterOrDigit('a'));//true
System.out.println("Character.isLetterOrDigit('张') -->"+Character.isLetterOrDigit('张'));//true, 汉字算字母?
System.out.println("Character.isLetterOrDigit(' ') -->"+Character.isLetterOrDigit(' '));//false
}
3、获取字符串中某个位置上的字符
/**
* codePointAt:获取字符串中某个位置上的字符
*/
private static void test06() {
//获取字符串中某个位置上的字符
int codePointAt = Character.codePointAt("abcdef", 1);
System.out.println("Character.codePointAt(\"abcdef\", 1) -->" + codePointAt);//98
codePointAt = Character.codePointAt("123456789", 1);
System.out.println("Character.codePointAt(\"123456789\", 1) -->" + codePointAt);//50
CharSequence seq = "/ 123456789";//这个是图形?
codePointAt = Character.codePointAt(seq, 0);
System.out.println(codePointAt);//预计是47? --> 47
codePointAt = Character.codePointAt(seq, 1);
System.out.println(codePointAt);//预计是32? --> 还真是32
//CharSequence是一个接口,String、StringBuffer、StringBuilder类都是CharSequence的子接口;
CharSequence seq1 = "*123456";//这个是图形?
codePointAt = Character.codePointAt(seq1, 0);
System.out.println(codePointAt);//预计是42? --> 42
String seq2 = "*123456";//这个是图形?
codePointAt = Character.codePointAt(seq2, 0);
System.out.println(codePointAt);//预计是42? --> 42
System.out.println("*******");
char[] cArr = { 'a', 'b', 'c' };
System.out.println(Character.codePointAt(cArr, 1)); //98
// 获取指定位置字符的代码点。第二个参数的值一定要小于第三个参数,否则异常
System.out.println(Character.codePointAt(cArr, 0, 1)); //97 why?第三个参数有何用???
System.out.println(Character.codePointAt(cArr, 0, 2)); //97 why?
System.out.println(Character.codePointAt(cArr, 0, 3)); //97 why?
System.out.println(Character.codePointAt(cArr, 1, 2)); //98 why?
System.out.println(Character.codePointAt(cArr, 1, 3)); //98 why?
}
看codePointAt源码,第三个参数limit貌似只起到了限定作用,第二个参数的值一定要小于第三个参数,否则异常,那岂不是大于第二个参数的都一样了???
public static int codePointAt(char[] a, int index, int limit) {
if (index >= limit || limit < 0 || limit > a.length) {
throw new IndexOutOfBoundsException();
}
return codePointAtImpl(a, index, limit);
}
// throws ArrayIndexOutOfBoundsException if index out of bounds
static int codePointAtImpl(char[] a, int index, int limit) {
char c1 = a[index];
if (isHighSurrogate(c1) && ++index < limit) {
char c2 = a[index];
if (isLowSurrogate(c2)) {
return toCodePoint(c1, c2);
}
}
return c1;
}
4、判断是否为大小写字母
/**
* isLowerCase:判断是否为小写字母
*/
private static void test07() {
// 将一个代码点转化为字符
System.out.println(Character.toChars(24352));//张
// 判断是否为小写字母
System.out.println(Character.isLowerCase('1'));//false
System.out.println(Character.isLowerCase('a'));//true
System.out.println(Character.isLowerCase('A'));//false
System.out.println(Character.isLowerCase(' '));//false
System.out.println(Character.isLowerCase('张'));//false
System.out.println("*********");
// 通过codepoint来判断是否为小写字母
System.out.println("isLowerCase: " + Character.isLowerCase(65)); //A --> false
System.out.println("isLowerCase: " + Character.isLowerCase(42)); //* --> false
System.out.println("isLowerCase: " + Character.isLowerCase(112)); //p --> true
// 判断是否为大写字母
System.out.println(Character.isUpperCase('1'));//false
System.out.println(Character.isUpperCase('a'));//false
System.out.println(Character.isUpperCase('A'));//true
System.out.println(Character.isUpperCase(' '));//false
System.out.println(Character.isUpperCase('张'));//false
}
5、UDC:通用十进制分类法
/**
* isLowSurrogate:该函数返回一个布尔值。如果char值介于MIN_LOW_SURROGATE和MAX_LOW_SURROGATE(含)之间,则返回的值为True,否则为False。
* UDC:通用十进制分类法
* UDC分类号中文版:https://wenku.baidu.com/view/a2b50d15866fb84ae45c8dc6.html
*/
private static void test08() {
char minLowSurrogate = Character.MIN_LOW_SURROGATE;
System.out.println(Character.MIN_LOW_SURROGATE);//输出? --> 为何会输出?
# 写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
![复习一周,字节跳动三场技术面+HR面,不小心拿了offer](https://img-blog.csdnimg.cn/img_convert/fd610dc582cb0776aec32a67e581c54d.png)
![复习一周,字节跳动三场技术面+HR面,不小心拿了offer](https://img-blog.csdnimg.cn/img_convert/224f17d8693fbfca86a3a493c176013e.png)
> 上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源我都在这里公开分享出来
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
[外链图片转存中...(img-RWOOeqlj-1630375029524)]
[外链图片转存中...(img-FEW8qPM9-1630375029525)]
> 上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源我都在这里公开分享出来
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**