1,数字
一: BigDecimal使用,可以兼容小数 public class AmountCalculated { private static final DecimalFormat df = new DecimalFormat("#.##"); public static double add(double a, double b) { double value = new BigDecimal(a).add(new BigDecimal(b)).doubleValue(); return Double.valueOf(df.format(value)); } public static double subtract(double a, double b) { double value = new BigDecimal(a).subtract(new BigDecimal(b)).doubleValue(); return Double.valueOf(df.format(value)); } public static double multiply(double a, double b) { double value = new BigDecimal(a).multiply(new BigDecimal(b)).doubleValue(); return Double.valueOf(df.format(value)); } public static double divide(double a, double b) { double value = new BigDecimal(a).divide(new BigDecimal(b), 2, RoundingMode.DOWN).doubleValue(); return Double.valueOf(df.format(value)); } }二: 还有一种方案,通常用于支付,则用long类型存数字,把小数乘100到分的单位存储,就消除了小数的存在
2,字符串
String (不可变,变则新建,慢)
StringBuilder (字符串变量,快,线程不安全)
StringBuffer (字符串变量,慢,线程安全)
List<String> labelContent = new ArrayList<String>(); labelContent.add(new StringBuilder().append("金蝶应缴订单") .append("-") .append("楼栋信息") .toString());StringBuilder content = new StringBuilder(); content.append("商品订单退单申请提醒:").append("\r\n"); content.append("> 订单编码:").append(goodsOrders.get(0).getOrderCode()).append("\r\n"); content.append("> 下单店铺:").append(smallGoodsSpaceMapper.selectGoodsSpace(SmallGoodsSpace.builder().spaceId(goodsOrders.get(0).getSpaceId()).build()).get(0).getSpaceName()).append("\r\n"); content.append("> 申请时间:").append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(executeDate)).append("\r\n");
3,时间
如果在时间上要超过Linux时间的,或者服务器时区不一样的就建议选择 datetime。
如果是想要使用自动插入时间或者自动更新时间功能的,可以使用timestamp。
datetime -> '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999' 8字节
timestamp -> '1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999' 4字节
也就是说,对于timestamp来说,如果储存时的时区和检索时的时区不一样,那么拿出来的数据也不一样。对于datetime来说,存什么拿到的就是什么。
如果只是想表示年、日期、时间的还可以使用 year、 date、 time,它们分别占据 1、3、3 字节,而datetime就是它们的集合。
4,地址(经纬度)
经纬的应用utils
473

被折叠的 条评论
为什么被折叠?



