?理论知识补充:
char是Java中的保留字,表示一种数据类型。与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode编码。不过8位的ASCII码包含在Unicode编码中,其值对应十进制的表示范围是0~127。
char是Java八大基本数据类型之一。
char在java中称为“字符型” 占2个字节。
字符常量是用单引号括起的一个字符,且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数。
也就是说Unicode向下兼容ASCII码,当chars[i]的Unicode的值在1-127之间时,也是ASCII码的值。
也就是数字、英文和英文状态下的字符Unicode和ASCII码是通用的。中文和中文状态下的字符是ASCII码打印不了的,我写的“你的ASCII码是错误,应该是Unicode的表示是"4f60"。我就不处理了,hello word里多了个"你” 测试用的。一般用不到。
package com.hs.reader3.until;
public class T1 {
public static void main(String[] args) {
String str = "Hello,你World!";
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
int asciiValue = (int) chars[i];
System.out.println(chars[i] + " 的 ASCII 值为:" + asciiValue);
String s = Integer.toHexString((int) chars[i]);
System.out.println(chars[i] + " 16进制 值为:" + s);
int cut = 4 - s.length();
if(s.length() < 4){
for(int j = 0;j < cut ;j++){
s = "0" + s;
}
}
System.out.println(chars[i] + " 四位的 16进制 值为:" + s);
}
}
}
运行结果
Connected to the target VM, address: '127.0.0.1:57723', transport: 'socket'
H 的 ASCII 值为:72
H 16进制 值为:48
H 四位的 16进制 值为:0048
e 的 ASCII 值为:101
e 16进制 值为:65
e 四位的 16进制 值为:0065
l 的 ASCII 值为:108
l 16进制 值为:6c
l 四位的 16进制 值为:006c
l 的 ASCII 值为:108
l 16进制 值为:6c
l 四位的 16进制 值为:006c
o 的 ASCII 值为:111
o 16进制 值为:6f
o 四位的 16进制 值为:006f
, 的 ASCII 值为:44
, 16进制 值为:2c
, 四位的 16进制 值为:002c
你 的 ASCII 值为:20320
你 16进制 值为:4f60
你 四位的 16进制 值为:4f60
W 的 ASCII 值为:87
W 16进制 值为:57
W 四位的 16进制 值为:0057
o 的 ASCII 值为:111
o 16进制 值为:6f
o 四位的 16进制 值为:006f
r 的 ASCII 值为:114
r 16进制 值为:72
r 四位的 16进制 值为:0072
l 的 ASCII 值为:108
l 16进制 值为:6c
l 四位的 16进制 值为:006c
d 的 ASCII 值为:100
d 16进制 值为:64
d 四位的 16进制 值为:0064
! 的 ASCII 值为:33
! 16进制 值为:21
! 四位的 16进制 值为:0021
Disconnected from the target VM, address: '127.0.0.1:57723', transport: 'socket'Process finished with exit code 0