数据类型转换

118 阅读3分钟

数据类型转换

工作中遇到各种数据类型之间的转换,之前遇到不会的都是现查,正好找个没事时间整理了一下之前遇到的各种情况,后期有新的会继续更新

1、将字符串转换为字符数组

        String str = "Manaphy";
        char[] charArray = str.toCharArray();
        System.out.println(Arrays.toString(charArray)); // [M, a, n, a, p, h, y]

2、将字符数组转换为字符串

        str = new String(charArray);
        System.out.println(str); // Manaphy

3、将字符串转换为byte数组

        byte[] bytes = str.getBytes(); // 以默认编码转换(UTF-8)
        byte[] gbkBytes = str.getBytes("GBK"); // 以GBK编码转换 (抛UnsupportedEncodingException异常)
        System.out.println(Arrays.toString(bytes)); // [77, 97, 110, 97, 112, 104, 121]

4、将byte数组转换为字符串

        str = new String(bytes);
        System.out.println(str); // Manaphy

5、把其他类型数据转换为字符串

        int i = 123;
        String txt = "" + i; // 字符串与基本类型数据连接
        txt = String.valueOf(i); // 转换基本数据类型

6、String、int、Integer的互相转换

       // int 转 Integer
        Integer integer1 = new Integer(10);
        Integer integer2 = Integer.valueOf(10); // 官方推荐这种写法
        Integer integer3 = 10; // 自动装箱
        
        // String 转 Integer
        Integer integer4 = Integer.valueOf("10");
        
        // Integer 转 int
        int int1 = integer1.intValue();
        int int2 = integer3; // 自动拆箱
        
        // int 转 String
        String str2 = String.valueOf(int1);
        String str3 = Integer.toString(int2);
        
        // String 转 int
        int int3 = Integer.parseInt(str2);
        
        // Integer 转 String
        String str4 = integer1.toString();

7、BigDecimal 与各种基本类型的互相转换

        // String 转 BigDecimal
        BigDecimal bd = new BigDecimal("12.34");
        
        // int 转 BigDecimal
        BigDecimal intBd = new BigDecimal(10);
        
        // long 转 BigDecimal
        BigDecimal longBd = new BigDecimal(12L);
        
        // double 转 BigDecimal (不建议直接转,先转换为String类型再转为 BigDecimal)
        BigDecimal doubleDb = new BigDecimal(12.34 + "");
        
        // BigDecimal 转换为基本类型和 String
        String str = bd.toString();
        int intValue = intBd.intValue();
        long longValue = longBd.longValue();
        double doubleValue = doubleDb.doubleValue();

8、List,Set,数组之间的转换

        String[] arr = new String[]{"A", "B", "C"};
        
        // 数组 转 List
        List<String> list = Arrays.asList(arr); // 长度固定不变 [list.add("D") 会报错]
        List<String> list1 = new ArrayList<>(Arrays.asList(arr)); // 长度可变 [可add()]
        
        // List 转 Set
        Set<String> set = new HashSet<>(list);
        
        // Set 转 List
        List<String> list2 = new ArrayList<>(set);
        
        // 数组 转 Set-->利用数组转List再转Set
        Set<String> set1 = new HashSet<>(Arrays.asList(arr));
        
        // List 转 数组
        Object[] array = list.toArray();
        
        // Set 转 数组
        Object[] arraySet = set.toArray();
        
        // 数组转字符串 org.apache.commons.lang3.StringUtils
        String join = StringUtils.join(arr, ","); // A,B,C

9、String 与 Date 之间的互相转换

        String strDate = "2019-04-13";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        
        // 将 String 转化为 Date
        Date date = sdf.parse(strDate);
        // 将 Date 转换为 String
        String format = sdf.format(date);

10、Date与LocalDateTime(JDK8新的时间类)的转换 (需要使用Instant中转)

        Date now = new Date();
        // Date 转 Instant
        Instant instant = Instant.ofEpochMilli(now.getTime());
        Instant instant1 = now.toInstant();
        // Instant 转 Date
        Date date1 = Date.from(instant);

        // Instant 转 LocalDateTime
        LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
        // LocalDateTime 转 Instant
        Instant instant2 = localDateTime.atZone(ZoneId.systemDefault()).toInstant();

字符串转数组,数组转字符串

    //字符串转化为数组
    String str = "aa,bbb";
    //1.字符串转字符串数组
    String[] strArr = str.split(",");
    //2.字符串转char数组
    char[] charArr = str.toCharArray();
    //3.读取字符串下标为i的char
    char s = str.charAt(1);
    
    
    String string = "a,b,c";
    String [] stringArr= string.split(","); //注意分隔符是需要转译滴...
    
    String string = "abc" ;
    char [] stringArr = string.toCharArray(); //注意返回值是char数组
    
    String string = "abc" ;
    byte [] stringArr = string.getBytes();
    
    String demo =  "[a,b,c]";
    方法一
    String demosub = demo.substring(1,demo.length()-1);
    String demoArray[] = demosub.split(",");
    List<String> demoList = Arrays.asList(demoArray);
    方法二
    Arrays.asList("[a,b,c]").get(0)

1、数字字符串转换为int数组

    String str2 = "123456";

    //方法一:通过charAt()可以获得对应下标的char值,用String.valueOf()转为字符串,
    //再用Integer.parseInt()转为数字
    int[] intArr2 = new int[str2.length()];
    for (int i = 0; i < intArr2.length; i++) {
        intArr2[i] = Integer.parseInt(String.valueOf(str2.charAt(i)));
    }

    //方法二:先转为char[]在赋值给int[],效果同上,但多创建了一个char数组
    char[] charArr2 = str2.toCharArray();
    int[] intArr3 = new int[str2.length()];
    for (int i = 0; i < intArr2.length; i++) {
        intArr3[i] = Integer.parseInt(String.valueOf(charArr2[i]));
    }

2、带分隔符数字字符串转化为int数组

    String str3 = "1,2,3,4,5";
    String[] strArr3 = str3.split(",");
    //分隔为字符数组后,只要循环String[]用Integer.parseInt()转为数字在赋值给int[]
    int[] intArr4 = new int[strArr3.length];
    for (int i = 0; i < strArr3.length; i++) {
        intArr4[i] = Integer.parseInt(strArr3[i]);
    }

3、char[]转字符串

        char[] charArr3 = new char[]{'1','2','3','4','5'};
        //1.用String工具类,效率最高
        String charSring1 = String.valueOf(charArr3);
        //2.直接new Sring
        String charSring2 = new String(charArr3);

4、String[]转字符串

        String[] strings = new String[]{"12","34","56","aa"};
        //用StringBuilder(效率快)或者StringBuffer(线程安全),不要用+拼接浪费内存
        StringBuilder stringBuffer1 = new StringBuilder();
        for (String string : strings) {
            stringBuffer1.append(string);
        }
        String s1 = stringBuffer1.toString();

5、int[]转字符串

        int[] ints = new int[]{1,2,4,3};
        StringBuilder stringBuffer2 = new StringBuilder();
        for (int anInt : ints) {
            stringBuffer2.append(anInt);
        }
        String s2 = stringBuffer2.toString();

Java将String型字符串转换成int型(或int型数组)

转换成int型数组代码实现

  String str = "6921168509256";
  int[] arr = new int[str.length()];
  for (int i = 0; i < str.length(); i++) {
    arr[i] = Integer.parseInt(str.substring(i, i + 1));//substring是找出包含起始位置,不包含结束位置,到结束位置的前一位的子串
  }
  for(int i:arr)//输出数组arr
    System.out.print(i+" ");

转换成int型代码实现

  String str = "69211685";
  int a = Integer.parseInt(str);
  System.out.print(a);

String字符串去掉双引号

String str= str.replace("\"", "");  //去掉左边的引号
String str= str.replaceAll("\"", "")  //去掉所有的引号