数字转字符
在编程时偶尔会用到字符的编码,做个笔记方便自己查看。。。
Java语言使用Unicode字符集,默认使用UTF-8格式;
因此Java的字符串也使用UTF-8编码;
UTF-8是一种针对Unicode的可变长度字符编码, 用1到4个字节编码Unicode字符,Java语言中的字符串实际上是使用字符型数组char[]存储。
String str = “abc”;
等同于:
char data[] = {‘a’, ‘b’, ‘c’}; String str = new String(data);
char ch1 = 'c';
char ch2 = 99;
char ch3 = 'a'+2;
char ch4 = '\u0063';//0063为16进制数,对应10进制为99
System.out.println(ch1);
System.out.println(ch2);
System.out.println(ch3);
System.out.println(ch4);
//输出结果都是 c
数字0到9的编码是: (十进制)48 ~ 57, (十六进制)0030 ~ 0039
字母A到Z的编码是:(十进制)65 ~ 90, (十六进制)0041 ~ 005a 或 0041 ~ 005A
字母a到z的编码是: (十进制)97 ~ 122,(十六进制)0061 ~ 007a 或 0061 ~ 007A
写了个代码感受感受:
public static void main(String[] args) {
char[] ch=new char[80];
for (int i=0;i<80;i++){
ch[i]=(char)('0'+i);
}
System.out.print("字符:");
for (char c:ch) {
System.out.print(c+"\t");
}
System.out.print("\n"+"编码:");
for (char c:ch) {
System.out.print(Character.hashCode(c)+"\t");
}
System.out.print("\n"+"编码:");
for (char c:ch) {
System.out.print(Integer.valueOf(c)+"\t");
}
}
输出结果:
// 第127貌似乱码了,数出来了,字符没了
字符:0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
编码:48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
编码:48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
字符转数字
int value = Integer.valueOf('c');
System.out.println(value);//99
int v = (int)'c';
System.out.println(v);//99
int val=Character.hashCode('c');
System.out.println(val);//99,这是Character的方法,获取当前字符的哈希表码,但结果与上面两个相同
int v1 = '3' - '0';
int v2 = 'd' - 'a';
int v3 = 'Z' - 'W';
System.out.println(v1); //3
System.out.println(v2); //3
System.out.println(v3); //3
int va = 'A' - '0';
System.out.println(va); //17;0的编码是48,A的编码是65,所以相减结果是17.
// 输出结果:
// 99 99 99 3 3 3 17
数字转字符
char c1 = 97;
char c2 = '\u0063';//0063为16进制数,对应10进制为99
System.out.println(c1);
System.out.println(c2);
// 输出结果:
// a c
实例
将字母A到Z,存入一个字符数组中
public static void main(String[] args) {
char[] ch=new char[26];
for (int i=0;i<26;i++){
ch[i]=(char)('A'+i);
}
}
输出伏羲六十四卦
package com.guo;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
GetChars();
}
public static void GetChars(){
{
List<Character> chars = new ArrayList<Character>();
int n=0;
for (int i = 19904; i <= 19967; i++)
{
chars.add((char)i);
}
/**添加到字符数组的方法
* char[] chars=new char[64];
* for (int i = 19904; i <= 19967; i++)
* {
* chars[i-19904]=(char)i;
* }
*/
for (Character c : chars) {
System.out.print(c+"\t");
n++;
if(n%8==0) {
System.out.println();
}
}
}
}
}