基本数据类型

注意:而然,在实际的开发过程中,Double.valueOf(String) 和Float.valueOf(String)会丢失精度。如果我们需要精确计算的结果,则必须使用BigDecimal类来操作!一般项目中都会写一个BigDecimal的工具类,可自行百度。
基本数据和包装类
原因:
- java是面向对象语言,基本数据类型并不是一个具体的类,用包装类可以更好的提现万物基于对象这一理念。
- 集合中的泛型需要基类是Object类型,所以必须有个对象的包装类才能使用
区别:
- 包装类属于引用数据类型,所以它们之间的区别就是基本数据类型和引用数据类型的区别。反应到内存中,基本数据类型的值是存放在栈里面,而包装类的栈存放的是值得地址,值存放在堆内存中。
- 初始值不同,eg: int的初始值为 0 、 boolean的初始值为false 而包装类型的初始值为null
注意:
在java中,Integer,Short,Byte,Character,Long有缓存机制。浮点型没有该机制,大小范围除Character为0-127外其余均为-128–127.
具体举例为:
Integer a1 = 1;
Integer a2 = 1;
Integer b1 = 200;
Integer b2 = 200;
Integer c1 = Integer.valueOf(1);
// Integer c2 = new Integer(1); 官方不推荐这种建对象的方法喔
Integer c2 = Integer.valueOf(1);
Integer d1 = Integer.valueOf(200);
Integer d2 = Integer.valueOf(200);
System.out.println("a1==a2?" + (a1 == a2));//true
System.out.println("b1==b2?" + (b1 == b2));//false
System.out.println("c1==c2?" + (c1 == c2));//false
System.out.println("d1==d2?" + (d1 == d2));//false
可以看到,不同的创建方式也有是否用缓存的区别,大家可以细细体会。
网友评论