Day019 String与其它类型之间的转换

String与不同数据类型的转换


String与基本数据类型之间的转换

  • 字符串--->基本数据类型、包装类

    • Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串转换为整型。
    • 类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。
  • 基本数据类型、包装类--->字符串

    • 调用String类的public String valueOf(int n)可将int型转换为字符串
    • 调用相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、valueOf(boolean b)可由参数的相应类型到字符串的转换。
 String str1="123";
 int num=Integer.parseInt(str1);

 String str2 = String.valueOf(num);

String与字符数组(char[])之间的转换


  • String --> char[]:调用String的toCharArray()方法。
  • char[] ---> String:调用String的构造器。
 public static void main(String[] args) {
        String str1="abc123";

        char[] charArray = str1.toCharArray();
        for (char c : charArray) {
            System.out.println(c);
        }

        char[] arr=new char[]{'h','e','l','l','o'};
        String str2 = new String(arr);
        System.out.println(str2);
    }

输出结果

a
b
c
1
2
3
hello

String与字节数组(byte[])之间的转换


  • 字节数组(byte[])--->字符串(String)

    • String(byte[]):通过使用平台的默认字符集解码指定的byte数组,构成一个新的String。
    • String(byte[],int offset,int length):用指定的字节数组的一部分,即从数组起始位置offset开始取length哥字节构造一个字符串对象。
  • 字符串(String)--->字节数组(byte[])

    • public byte[] getBytes():使用平台的默认字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中。
    • public byte[] getBytes(String charsetName):使用指定的字符集将此String编码到byte序列,并将结果存储到新的byte数组。
public static void main(String[] args) throws UnsupportedEncodingException {
        String str1="abc123中国";
        byte[] bytes = str1.getBytes();//使用默认的字符集,进行编码(UTF-8)
        System.out.println(Arrays.toString(bytes));

        byte[] gbks= str1.getBytes("gbk");//使用gbk字符集进行编码
        System.out.println(Arrays.toString(gbks));

        System.out.println("*****************************");

        String str2 = new String(bytes);//使用默认的字符集,进行解码(UTF-8)
        System.out.println(str2);

        String str3 = new String(gbks);
        System.out.println(str3);//出现乱码,原因:编码集和解码集不一致

        String str4 = new String(gbks, "gbk");
        System.out.println(str4);//没有出现乱码,原因:编码集和解码集一致
    }
    

输出结果

[97, 98, 99, 49, 50, 51, -28, -72, -83, -27, -101, -67]
[97, 98, 99, 49, 50, 51, -42, -48, -71, -6]
*****************************
abc123中国
abc123�й�
abc123中国

  • 编码:字符串(能看懂)---->字节(看不懂的二进制数据)
  • 解码:字节(看不懂的二进制数据)------>字符串(能看懂)
  • 乱码:编码和解码使用了不同的方式。

尚硅谷

posted @ 2021-05-19 21:04  南方风  阅读(49)  评论(0编辑  收藏  举报