常用的数据转换

1. FastJson

1.1 Json格式和java对象之间的转换

Json转换为java对象

JSONObject recvDataJson;
deviceDataReport = recvDataJson.toJavaObject(DeviceDataReport.class);

java对象转换为Json

QuarterPduData quarterPduData;
JSONObject.toJSONString(quarterPduData)

1.2 JSON和字符串之间的转换

Json转换为字符串

JSONObject recvDataJson;
deviceDataReport = recvDataJson.toJavaObject(DeviceDataReport.class);

字符串转换为Json

QuarterPduData quarterPduData;
JSONObject.toJSONString(quarterPduData)

2. 日期之间的转换

继承org.apache.commons.lang3.time该类。

2.1 日期型字符串转化为日期 格式

public static Date parseDate(Object str){
    return DateUtiles.parseDate(str.toString(), yyyy-MM-dd HH:mm:ss);
}

2.2 时间戳转换为格式化后的date

public static Date stampToTime(String s){
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    long lt = new Long(s);
    //将时间戳转换为时间
    Date date = new Date(lt);
    //将时间调整为yyyy-MM-dd HH:mm:ss时间样式
    String res = simpleDateFormat.format(date);
    //再将日期型字符串转换为日期格式
    return parseDate(res);
}

3. 常用数据类型转换

3.1 int

int转Integer

int i=1;
Integer i1=new Integer(i);
Integer i2=Integer.valueOf(i);
// 自动装箱(实际使用的valueOf()方法)
Integer i3=i;

int转String

int i=15;
//使用+
String s1=i+"";
//使用Integer中的toString方法 f
String s = Integer.toString(i, 16);
String s2 = Integer.toString(i, 2);
String s3 = Integer.toBinaryString(i); //转为2进制字符串形式
//true
System.out.println(s2.equals(s3));

Integer缓冲区(面试)

Integer integer1=100;
Integer integer2=100;
//true
System.out.println(integer1==integer2);
Integer integer3=200;
Integer integer4=200;
//false
System.out.println(integer3==integer4);

分析

  • 如果i在-128127之间,从Integer缓冲区拿(true)。否则新建一个Integer对象(false)。
//自动装箱使用的是Integer.valueOf()方法
public static Integer valueOf(int i) {
      if (i >= IntegerCache.low && i <= IntegerCache.high)
          return IntegerCache.cache[i + (-IntegerCache.low)];
      return new Integer(i);
  }

3.2 String

String转int

  • 注意int范围
String s="150";
//将16进制的字符串s转换为int类型(10进制) 336
int i =Integer.parseInt(s,16);

16进制字符串转10进制字符串

public static String hexToDec(String hex){
    //1.先将16进制字符串转为10进制int类型
    int i = Integer.parseInt(hex, 16);
    return Integer.toString(i);
}

10进制字符串转16进制字符串

//将十进制字符串转换为十六进制字符串
public static String decToHex (String dec){
    int i = Integer.parseInt(dec);
    return Integer.toHexString(i);
}

16进制字符串转2进制字符串

//十六进制的字符串转换为byte数组
public static String parseHexStrByte(String hexStr){
    StringBuilder a= new StringBuilder();
    for (int i = 0; i < hexStr.length(); i++) {
        a.append(g(hexStr.charAt(i)));
    }
    return a.toString();
}
public static String g(char charAt) {
    switch (charAt) {
        case '0':
            return "0000";
        case '1':
            return "0001";
        case '2':
            return "0010";
        case '3':
            return "0011";
        case '4':
            return "0100";
        case '5':
            return "0101";
        case '6':
            return "0110";
        case '7':
            return "0111";
        case '8':
            return "1000";
        case '9':
            return "1001";
        case 'A':
            return "1010";
        case 'B':
            return "1011";
        case 'C':
            return "1100";
        case 'D':
            return "1101";
        case 'E':
            return "1110";
        case 'F':
            return "1111";
    }
    return null;
}

3.3 boolean

String转boolean

String b = "true";
boolean b1 = Boolean.parseBoolean(b);
//true
System.out.println(b1);
String b2 ="ssss";
boolean b3 = Boolean.parseBoolean(b2);
//false(非true的String都是false)
System.out.println(b3);
posted @ 2021-11-16 15:13  初夏那片海  阅读(167)  评论(0)    收藏  举报