首页 > 编程语言 >java基础知识

java基础知识

时间:2022-08-23 20:34:51浏览次数:187  
标签:java BigDecimal 对象 double float 基础知识 toString PO

1.数据类型

 1.1 8种基本的数据类型:

 boolean、byte、short、int、long、float、double、char、

简单类型 boolean byte char short Int long float double void
二进制位数 1 8 16 16 32 64 32 64 --
封装器类 Boolean Byte Character Short Integer Long Float Double Void
最大存储数据   255   65536 2的32次方减1 2的64次方减1      
数据范围 true和false -128~127 存储Unicode码 -32768~32767 -231~231-1 -263~263-1 3.4E-38~3.4E+38 1.7E-308~1.7E+308  

常见对象的数据类型:

         

1.2浮点型数据说明(float,double):

       Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

float:1bit(符号位),8bits(指数位),23bits(尾数位)
double:1bit(符号位),11bits(指数位),52bits(尾数位)

float尾数位23位,2^23=8.3E6,7位,所以不同的编译器规定不同,有些是7位,有些8位
double尾数52位,2^52=4.5E15,15位,所以double的有效位数是15位

1.3BigDecimal (精确浮点数运算的类)

浮点型精度丢失问题: https://www.iteye.com/blog/hxraid-504293

       float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。使用BigDecimal并且一定要用String来够造。BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一个浮点数

bigdecimal比等方法:

       equals() 方法认为,两个表示同一个数但换算值不同(例如, 100.00 和 100.000 )的 BigDecimal 值是不相等的。然而, compareTo() 方法会认为这两个数是相等的,所以在从数值上比较两个 BigDecimal 值时,应该使用 compareTo() 而不是 equals() 。 另外还有一些情形,任意精度的小数运算仍不能表示精确结果。例如, 1 除以 9 会产生无限循环的小数 .111111... 。出于这个原因,在进行除法运算时, BigDecimal 可以让您显式地控制舍入。 movePointLeft() 方法支持 10 的幂次方的精确除法。

System.out.println(new BigDecimal(0.1).toString()); // 0.1000000000000000055511151231257827021181583404541015625
System.out.println(new BigDecimal("0.1").toString()); // 0.1
System.out.println(new BigDecimal(
Double.toString(0.1000000000000000055511151231257827021181583404541015625)).toString());// 0.1
System.out.println(new BigDecimal(Double.toString(0.1)).toString()); // 0.1
结论: 1.如果你希望BigDecimal能够精确地表示你希望的数值,那么一定要使用字符串来表示小数,并传递给BigDecimal的构造函数。 2.如果你使用Double.toString来把double转化字符串,然后调用BigDecimal(String),这个也是不靠谱的,它不一定按你的想法工作。 3.如果你不是很在乎是否完全精确地表示,并且使用了BigDecimal(double),那么要注意double本身的特例,double的规范本身定义了几个特殊的double值(Infinite,-Infinite,NaN),不要把这些值传给BigDecimal,否则会抛出异常。   BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。

1.4 Date时间处理函数 

        https://www.cnblogs.com/q994321263/p/16153470.html

2.实体模型的定义PO,BO,VO,POJO,DTO 之间的区别

     参考:https://blog.csdn.net/u011870547/article/details/81077153

PO:persistent object 持久对象

1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。

2 .在hibernate持久化框架中与insert/delet操作密切相关。

3 .PO中不应该包含任何对数据库的操作。

POJO :plain ordinary java object 无规则简单java对象,一个中间对象,可以转化为PO、DTO、VO。

BO:business object 业务对象,业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

         比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。

VO:value object 值对象 / view object 表现层对象。

DTO(TO):Data Transfer Object 数据传输对象。

DAO:data access object数据访问对象。

 

 

 

    

 

标签:java,BigDecimal,对象,double,float,基础知识,toString,PO
From: https://www.cnblogs.com/q994321263/p/15983263.html

相关文章