String与char[]之间的转换
char[]:字符数组
String的底层是char[]
String转换成char[]
调用String的toCharArray()返回char[]
String str="abc123";
char[] chars=str.toCharArray();
for(int i=0;i<chars.length;i++) {
System.out.println(chars[i]);
}
char[]转换成String
调用String的构造器
char[] arrs=new char[] {'h','e','l','l','o'};
String str=new String(arrs);
System.out.println(str);//hello
String与byte[]之间的转换
byte[]:字节数组
String转换成byte[],是编码的过程
注意: String转换成char[],不叫编码,因为还是能看懂转换后的数据
调用String的getBytes()返回byte[]
编码:字符串转换成字节(从看得懂的转化成看不懂的二进制数据)
解码:字节转化成字符串(从看不懂的二进制数据转换成看得懂的东西)
String str="abc123中国";
byte[] bytes=str.getBytes();//使用默认的字符集进行转换(编码)
System.out.println(Arrays.toString(bytes));//[97, 98, 99, 49, 50, 51, -42, -48, -71, -6]
byte[] bytes1=str.getBytes("UTF-8");//使用UTF-8字符集进行编码
System.out.println(Arrays.toString(bytes1));//[97, 98, 99, 49, 50, 51, -28, -72, -83, -27, -101, -67]
byte[]转换成String,是解码的过程
调用String的构造器
String str="abc123中国";
byte[] bytes=str.getBytes();//使用默认的字符集进行编码
String str1=new String(bytes);//使用默认的字符集进行解码
System.out.println(str1);//abc123中国
byte[] bytes1=str.getBytes("UTF-8");//使用UTF-8字符集进行编码
String str2=new String(bytes1);
System.out.println(str2);//输出结果为abc123涓浗,原因是bytes1编码的时候用的是UTF-8,解码的时候用的是默认的字符集,所以乱码
//编码用的UTF-8,解码必须也用UTF-8才不会出问题
String str3=new String(bytes1, "UTF-8");//指定用UTF-8这种字符集进行解码
System.out.println(str3);//abc123中国
注意:解码使用的字符集和编码使用的字符集必须一致,否则会出现乱码