新工作转到大数据方向,每天都要面对数据类型互相转换的工作,再加上先前面试发现这部分的知识盲点,

决定复习之余自己再写一套便捷的方法,以后会比较方便。(虽然公司有现成封装的类,里头还有些遗漏的地方,暂时不敢随便修改 )

1. BigDecimal和基本类型之间的转换

现在蹲在银行里做项目,对数字的精准性要求较高。比起Java里常用的double、int这些数据类型,BigDecimal的好处在于能够设置你想要的精度。

① BigDecimal和字符串String类型

  1. //字符串 → BigDecimal
  2. String a = "1.2";
  3. BigDecimal a2 = new BigDecimal(a);
  4. //Big Decimal → 字符串
  5. BigDecimal b = new BigDecimal("1.2");
  6. String b2 = b.toString();
  7.  
  8. //使用DecimalFormat可设置精度
  9. DecimalFormat df = new DecimalFormat("0.00");
  10. String b3 = df.format(b);
  11. System.out.println(b2);//1.2
  12. System.out.println(b3);//1.20

② 同理,double和int等数据类型也可与BigDecimal进行转换,但不建议使用double类型进行转换(浮点数没有办法用二进制准确表示)

  1. //浮点型 与 BigDecimal
  2. BigDecimal i = new BigDecimal(1.2);//浮点型
  3. i.doubleValue();
  4. //整型 与 BigDecimal
  5. BigDecimal i2 = new BigDecimal(1);//整型
  6. i.intValue();

关于BigDecimal的具体计算和不建议用浮点数进行BigDecimal转换,可以参照:https://www.cnblogs.com/LeoBoy/p/6056394.html

③BigDecimal的加减乘除

  1. BigDecimal a = new BigDecimal("1");
  2. BigDecimal b = new BigDecimal("2");
  3.  
  4. a.add(b);//加法 a+b
  5. a.subtract(b);//减法 a-b
  6. a.multiply(b);//乘法 axb
  7. a.divide(b);//除法 a/b
  8. int scale = 2;//精度 - 小数点后几位
  9. a.divide(b,scale,BigDecimal.ROUND_HALF_UP);//四舍五入

2. 基本数据类型和包装类之间的转换

在一次面试中,面试官问到装箱拆箱,以及为什么要设置基本数据类型的包装类的问题,后面那个问题答不上。

基本数据类型包装类存在是有理由的,基本数据类型不支持面向对象的编程机制,在集合指定对象类型进行存储时,由于基本数据类型不是对象,所以无法指定,但我们可以用基本数据类型的包装类。在集合使用过程中,包装类会自动拆箱封箱,从而达到存储、获取基本数据类型的功能。

  1. //装箱:基本类型 → 基本类型的包装类
  2. Integer i = 3;
  3. //拆箱: 包装类型 → 基本类型
  4. int ii = i;
  5. ii = new Integer(3);
  6.  
  7. //基本类型 → 包装类
  8. Integer s1 = Integer.valueOf("1");
  9. Integer s2 = Integer.valueOf(1);
  10. System.out.println(s1==s2);//true, s1,s2指向同一个数值
  11.  
  12. //Integer之间的比较
  13. Integer i1 = 1;
  14. Integer i2 = 1;
  15. System.out.println(i1==i2);//true
  16. System.out.println(s1==i1);//true
  17.  
  18. Integer i3 = 150;
  19. Integer i4 = 150;
  20. System.out.println(i3==i4);//false 超出Integer数值范围
  21.  
  22. //Integer和new Integer的比较,新创建(new)的包装类对象一定与其它包装类不相等
  23. Integer s3 = 1;
  24. Integer s4 = new Integer(1);
  25. Integer s5 = new Integer("1");
  26. System.out.println(s3==s4);//false
  27. System.out.println(s4==s5);//false
  28.  
  29. //Integer和int的比较
  30. int c1 = Integer.parseInt("1");
  31. Integer c2 = Integer.parseInt("1");
  32. System.out.println(c1==c2);//Integer与int比较时会把Integer类型转为int类型,比较的是值的大小

3. 日期

  1. Date date = new Date();
  2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3. String str1 = sdf.format(date);
  4.  
  5. String str2 = "2018年12月12日";
  6. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
  7. try {
  8.     Date date2 = sdf2.parse(str2);//给定的时间格式必须满足或者少于字符串的位数
  9.   } catch (ParseException e) {
  10.     e.printStackTrace();
  11.   }

【Java】常用数据类型转换(BigDecimal、包装类、日期等)的更多相关文章

  1. java常用数据类型转换

    在Java开发过程中经常会涉及到数据类型的转换问题,比如数字型转字符型,字符型转日期型,字符串转数组等等,以及其他类型的强制转换等.经常出现,所以有必要总结一下. 1.如何将字串 String 转换成 ...

  2. Java高级数据类型转换:包装类、String字符串、Date类等与其他类型转换

    1.包装类过渡类型转换 一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了.例如: 当希望把float型转换为double型时: float f1=1 ...

  3. 泛型集合、datatable常用数据类型转换Json帮助类

    泛型集合.datatable常用数据类型转换Json帮助类 using System; using System.Data; using System.Configuration; using Sys ...

  4. Java中数据类型转换&基本类型变量和对象型变量

    1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型    byte,short,int,lo ...

  5. Python基础学习笔记(九)常用数据类型转换函数

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...

  6. java常用类之BigDecimal

    BigDecimal 小数计算丢失精度问题 在计算机中,所有文件都是以二进制存储的,数字运算也是使用二进制进行计算的,因为计算机中不存在小数点,所以我们通常说的浮点数如float.double都是计算 ...

  7. Java基础知识强化22:Java中数据类型转换

    数据类型转换: (1). 自动转换 低级变量可以直接转换为高级变量,这叫自动类型转换.比如: byte b: int b:  long b:  float b:   double  b: 上面的语句可 ...

  8. Java中数据类型转换大全(个人总结)

    一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.value ...

  9. Python常用数据类型转换

    常用的数据类型转换 目标 了解类型转换的作用 掌握常用的类型转换 函数 说明 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ...

  10. python运算符和常用数据类型转换

    运算符 算术运算符 运算符 描述 实例 + 加 两个对象相加 a + b 输出结果 30 - 减 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 两个数相乘或是返回一个被重复若干 ...

随机推荐

  1. checkbox多选、全选js效果

    //全选checkbox function allCheck() { //全选input var all = $("input[name='all']"); //全部的input ...

  2. EOF是什么

    我学习C语言的时候,遇到的一个问题就是EOF. 它是end of file的缩写,表示"文字流"(stream)的结尾.这里的"文字流",可以是文件(file) ...

  3. Java基础01-JVM内存分析

    JVM java虚拟机 java编译后的class文件就是在java虚拟机上运行的 1.栈区(stacksegment)存放函数的参数值,局部变量的值等,在超过这个变量的作用域时就会被系统自动释放掉存 ...

  4. 【input】——数据传入后台

    1.复选框 checkbox <label class="checkbox"> <input type="checkbox" name=&qu ...

  5. MVC4 过滤器使用和怎样控制全部action和部分action

    MVC中的过滤器分四种分别为:IActionFilter(动作过滤器), IAuthorizationFilter(授权过滤器), IExceptionFilter(异常过滤器), IResultFi ...

  6. #与javascript:void(0)的区别

    #"包含了一个位置信息 默认的锚点是#top 也就是网页的上端 而javascript:void(0)  仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首 而 ...

  7. 服务器断电后 redis重启后启动不起来

    服务器断电后 redis 重启后启动不起来 原因:db持久化失败 1. 先查询redis的进程 ps -ef|grep redis 2. 查询redis的缓存文件在哪 whereis dump.rdb ...

  8. 5.1 Linux(8)

    2019-5-1 21:37:20 嗓子前天回来上火,现在不疼了就是有点痒痒! 多喝热水 今天老师讲的如何发布项目,其实就是配置一下自己的uwsgi和  Nginx  配置一下 其他的不难 笔记很详细 ...

  9. npm下载某个版本

    如果我想要引入的是Jquery的1.7.2版本,则输入npm intall jquery@1.7.2,那么npm包管理器就会帮助你下载jquery1.7.2的版本到你当前操作目录下的node_modu ...

  10. c#和c++的运算符优先级

    闲来无聊乱写代码.发现基础的东西有的时候也非常的抽象.不信?那来看看下面这条语句: ; ; j = i = -i++; 如果上述代码是vc++代码,那么输出结果是: i=- j=- 请按任意键继续. ...