涉及到String类与其他结构之间的转换
package com.atguigu.java;
import org.junit.Test;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
/**
* 涉及到String类与其他结构之间的转换
*
* @author liangqichen
* @create 2021-08-31 9:41
*/
public class StringTest1 {
/*
String 与 byte[] 之间的转换 编码
String --> byte[] :调用String的 getBytes() 方法 编码
byte[] --> String : 调用String的构造器 解码
编码: 字符串 ---》 字节 从能看得懂的 转为 看不懂的二进制数据
解码:字节 --- 》 字符串 从看不懂的2进制数据, 转为能看的懂得
说明 : 在解码时 , 要求解码使用的字符集必须与编码时使用的字符集一致 , 否则会出现乱码。
*/
@Test
public void test3() throws UnsupportedEncodingException {
String str1 = "abc123中国";
byte[] bytes = str1.getBytes(); // 使用默认的字符集,进行编码 utf-8
System.out.println(Arrays.toString(bytes)); // [97, 98, 99, 49, 50, 51] // [97, 98, 99, 49, 50, 51, -28, -72, -83, -27, -101, -67]
byte[] gbks = str1.getBytes("gbk"); // 使用gbk字符集进行编码
System.out.println(Arrays.toString(gbks)); // [97, 98, 99, 49, 50, 51, -42, -48, -71, -6]
System.out.println("*************************************");
String str2 = new String(bytes); // 使用默认的字符集,进行解码
System.out.println(str2); // abc123中国
String str3 = new String(gbks);
System.out.println(str3); // abc123�й� 出现乱码 编码集和解码集不一致
String str4 = new String(gbks, "gbk");
System.out.println(str4); // abc123中国 没有出现乱码 , 编码集和解码机是一致!!
}
/*
String 与 char[]之间的转换
String --> char[] : 调用String的 toCharArray()
char[] --> String : 调用String的构造器
*/
@Test
public void test2() {
String str1 = "abc123";
char[] charArray = str1.toCharArray();
for (int i = 0; i < charArray.length; i++) {
System.out.println(charArray[i]);
}
char[] arr = new char[]{'h', 'e', 'l', 'l', 'o'};
String str2 = new String(arr);
System.out.println(str2);
}
/*
复习:
String 与基本数据类型、包装类之间的转换
String -- > 基本数据类型 、 包装类 : 调用包装类的静态方法 ; parseXxx(str)
基本数据类型 、 包装类 -- > String : 调用 String重载的 valueOf(xxx)
*/
@Test
public void test1() {
String str1 = "123";
int num = Integer.parseInt(str1);
String str2 = String.valueOf(num); // "123"
String str3 = num + ""; //在堆空间中
System.out.println(str1 == str3); // fasle
}
}