String类型转换问题

/**
*
* 1.String---->基本数据类型、包装类:调用包装类的静态方法:parseXxx(str)
* 基本数据类型、包装类---->String:调用String重载的valueOf(xxx)
*
* 2.String 与char[]之间的转换
* String--->char[]:调用String的toCharArray()
* char[]--->String:调用String的构造器
*
* 3.String与byte[]之间的转换
* 编码:String--->byte[]:调用String的getBytes()
* 解码:byte[]--->String:调用String的构造器
*
*
* @author fu jingchao
* @creat 2021/10/30-19:55
*/

 1 package com.atfu.java01;
 2 
 3 import org.junit.Test;
 4 
 5 import java.io.UnsupportedEncodingException;
 6 import java.util.Arrays;
 7 
 8 /**
 9  *
10  * 1.String---->基本数据类型、包装类:调用包装类的静态方法:parseXxx(str)
11  * 基本数据类型、包装类---->String:调用String重载的valueOf(xxx)
12  *
13  * 2.String 与char[]之间的转换
14  * String--->char[]:调用String的toCharArray()
15  * char[]--->String:调用String的构造器
16  *
17  * 3.String与byte[]之间的转换
18  * 编码:String--->byte[]:调用String的getBytes()
19  * 解码:byte[]--->String:调用String的构造器
20  *
21  *
22  * @author fu jingchao
23  * @creat 2021/10/30-19:55
24  */
25 public class StringTest1 {
26     @Test
27     //String--->char[]:调用String的toCharArray()
28     public void test1(){
29         String str1 = "abc123";
30         char[] charArray = str1.toCharArray();
31         for (int i = 0; i < charArray.length; i++) {
32             System.out.println(charArray[i]);
33         }
34         System.out.println(charArray.getClass());
35         System.out.println(str1);
36         System.out.println(str1.getClass());
37     }
38     @Test
39     //char[]--->String:调用String的构造器
40     public void test2(){
41         char[] arr = new char[]{'h','e','l','l','o'};
42         String str2 = new String(arr);
43         System.out.println(str2);
44         System.out.println(arr.getClass());
45     }
46 
47     @Test
48     /*
49      //String与byte[]之间的转换
50     编码:String--->byte[]:调用String的getBytes()
51     解码:byte[]--->String:调用String的构造器
52 
53     编码:字符串转换为字节数组(看得懂------>看不懂的二进制)
54     解码:字节数组转换为字符串
55 
56     说明:解码时,要求解码使用的字符集必须与编码使用的字符集一致,否则会出现乱码。
57      */
58 
59     public void test3() throws UnsupportedEncodingException {
60         String str = "abc123中国";
61         byte[] bytes = str.getBytes();//使用默认的编码集进行编码
62         System.out.println(Arrays.toString(bytes));//[97, 98, 99, 49, 50, 51, -28, -72, -83, -27, -101, -67]
63 
64         byte[] gbks = str.getBytes("gbk");//使用gbk字符集进行编码
65         System.out.println(Arrays.toString(gbks));//[97, 98, 99, 49, 50, 51, -42, -48, -71, -6]
66 
67         System.out.println("*************************");
68         String str2 = new String(bytes);//使用默认的编码集进行解码
69         System.out.println(str2);
70 
71         String str3 = new String(gbks);
72         System.out.println(str3);//出现乱码,原因:编码集和解码集不一致
73 
74         String str4 = new String(gbks, "gbk");
75         System.out.println(str4);
76 
77     }
78 
79 }

 

 
posted @ 2021-10-30 21:08  橘猫的夏天  阅读(71)  评论(0编辑  收藏  举报