1.在java中,一个char是2个字节(byte),而一个中文汉字是一个字符,也是2个字节。而英文字母都是一个字节,因此它也能保存在一个byte中,一个汉字却不能。(char:16,byte:8)。
2.char类型
public class ChineseTest1 {
public static void main(String[] args) {
char a='中';
char b='国';
byte c='a';
byte d='b';
char e='e';
char f='f';
String w="a";
System.out.println(a);
System.out.println(a+b);
System.out.println(w+a);
System.out.println(a+c);
System.out.println("欢迎来到"+a+b);
System.out.println();
/*System.out.println("fewg"+a+b);
System.out.println(a+e);
System.out.println(c+"fewf");*/
}
}
运行结果:
中
42282
a中
20110
欢迎来到中国
结论: (1)当char类型单独、“+”字符串输出时,如果char中的值为中文,则输出中文。
(2)当char类型用“+”连接char类型或byte类型输出时,则输出ASCII码值,然后相加。
3.byte类型
public class ChineseTest1 {
public static void main(String[] args) {
char a='中';
byte c='a';
byte d='b';
System.out.println(c);
System.out.println(a+c);
System.out.println(c+d);
System.out.println(c+"fewf");
}
}
运行结果:
97
20110
195
97fewf
结论:也就是说,不管byte是单独输出,还是和char,String类型一起输出,byte类型都是输出ASCII码值.
4.反转字符串
public class StringReverse {
public static void main(String[] args) {
String str = "A quick brown fox jumps over the lazy dog.";
StringBuffer s = new StringBuffer(str);
s = s.reverse();
System.out.println(s);
}
}
运行结果:
.god yzal eht revo spmuj xof nworb kciuq A
5.字符编码
(1)JAVA所采用的编码方案是UTF-16BE。
public class EncodeTest {
public static void main(String[] args) {
String s="str中国";
try {
String a=new String(s.getBytes(),"UTF-8");//转化为utf-8字符
int c=s.getBytes("GBK").length;//转化为utf-8字符后的字节数
System.out.println(c);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
运行结果:
7
6.判断是否为汉字
public class EncodeTest2 {
public static void main(String[] args) {
String s="str中国";
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println(s.charAt(2));
System.out.println(s.charAt(3));
System.out.println(s.charAt(4));
byte[] k=s.getBytes();
byte[] b=new byte[5];
System.out.println(k.length+"个字节");
for(int i=0;i<k.length;i++){
System.out.println("第"+(i+1)+"个字节的值是"+k[i]);
}
System.arraycopy(k, 0, b, 0, 4);//截取4个字符
System.out.println(new String(b));
}
}
7.
public class EncodeTest2 {
public static void main(String[] args) {
String s="str中国";
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println(s.charAt(2));
System.out.println(s.charAt(3));
System.out.println(s.charAt(4));
byte[] k=s.getBytes();
byte[] b=new byte[5];
System.out.println(k.length+"个字节");
for(int i=0;i<k.length;i++){
System.out.println("第"+i+"个字节的值是"+k[i]);
}
System.arraycopy(k, 0, b, 0, 4);//截取4个字符
System.out.println(new String(b));
}
}
运行结果:
s
t
r
中
国
7个字节
第1个字节的值是115
第2个字节的值是116
第3个字节的值是114
第4个字节的值是-42
第5个字节的值是-48
第6个字节的值是-71
第7个字节的值是-6
str?