01.java基础知识
1.数据类型
1.1 8种基本的数据类型: boolean、byte、short、int、long、float、double、char、

常见对象的数据类型:

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 (精确浮点数运算的类)
浮点型精度丢失问题(一定要用String来构造): https://www.iteye.com/blog/hxraid-504293
float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。使用BigDecimal并且一定要用String来够造。BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一个浮点数
bigdecimal比等方法(compareTo来进行比较):
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.4 Date时间处理函数
https://www.cnblogs.com/q994321263/p/16153470.html
1.5 String 类型中的大小比较
@Test
public void a(){
String a="ab",b="ab";
System.out.println(a==b); //true
System.out.println(a.equals(b));//true
}
在JDK1.8中是相等的
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数据访问对象。

3.开过程中遇到BUG汇总
3.1 split分割问题:第一个为分隔符,第二个为拆分的字符串个数
用例:
String a="_";
String[] accountPeriodStrs=a.split("_",3);
//分割结果为2个
String b="_____";
String[] accountPeriodStrs2=b.split("_",3);
//分割结果为3个,剩下的放在一快
测试结果:


浙公网安备 33010602011771号