Double和double的区别
- double是基本数据类型,不是一个类;Double是原始数据类型,是一个类,Object的一个子类
- double没有方法,Double有自己的属性和方法
- double只创建引用,Double创建对象
- 集合类不能存放double,只能存放Double
- 两者存放位置不同:
- double存放在栈中
栈的存取速度要高于堆,另外栈中的数据可以共享,不会创建对象,只会建立两个引用,同时指向变量“0”(栈数据共享)
如:
double a = 0;
double b = 0;
//两个值是同一个栈中的 0,栈中没有两个0
- Double存放在堆中
会创建两个对象,即使对象所代表的值一样(堆数据不共享)
但是,Java中基本类型的包装类大都实现了常量池技术,即Byte,Short,Integer,Long,Character,Boolean。这5种包装类默认创建了数值[-128,127]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象。 两种浮点数类型的包装类Float、Double并没有实现常量池技术。
如:
Double a = new Double(0);
Double b = new Double(0);
//两个引用指向同一个对象,但如果超出[-128,127]这个范围,则每一个new都将创建新的对象
总结:
所以从效率来讲用double合适,而Double提供的属性和方法会使操作各种操作更加方便和灵活