String与其他类型的转换
String与基本数据类型,包装类之间的转换
String->基本数据类型,包装类 :调用包装类的静态方法:parsexxx(str)
基本数据类型,包装类 ->String:调用String重载的valueof(xxx)
String s1="123";
//String-->Integer
int num = Integer.parseInt(s1);
//Integer-->String
String s2 = String.valueOf(num);
System.out.println(s2);
String 与char[]之间的转换
String->char[]:调用String的toCharArray()
char[]->String:调用String的构造器
String s1="abc123";
//String-->char[]
char[] chars = s1.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);
}
//char[]-->String
String s2 = new String(chars);
System.out.println(s2);
String与byte[]之间的转换
编码:String->byte[]:调用String的getBytes()
解码:byte[]->String:调用String的构造器
编码:字符串-->字节 (看的懂的--》看不懂的二进制数据)
解码:编码的逆过程,字节--->字符串 (看不懂的二进制数据-->看的懂的)
说明:解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码。
String s1="abc123中国";//utf-8:三个字节一个汉字 gbk:两个字节一个汉字
//String-->byte[]
byte[] bytes = s1.getBytes();//使用默认的字符集进行编码
System.out.println(Arrays.toString(bytes));
byte[] gbks = s1.getBytes("gbk");
System.out.println(Arrays.toString(gbks));
System.out.println("*********************");
String s2 = new String(bytes);//使用默认的字符集进行解码
System.out.println(s2);
String s3 = new String(gbks);//用utf-8去解码gbk编的码,乱码
System.out.println(s3);