double是基本数据类型,Double是原始数据类型
double没有方法,Double有自己的属性和方法
double只创建引用,Double创建对象
集合类不能存放double,只能存放Double
double存放在栈中,Double存放在堆中
栈的存取速度要高于堆,另外栈中的数据可以共享
如:
double a = 0;
double b = 0;
不会创建对象,只会建立两个引用,同时指向变量“0”(栈数据共享)
而
Double a = new Double(0);
Double b = new Double(0);
会创建两个对象,即使对象所代表的值一样(堆数据不共享)
所以从效率来讲用double合适,而Double提供的属性和方法会使操作各种操作更加方便和灵活
例如:
package inheritance;
import java.time.*;
/**
*
* @author cmx
*/
public class hashCode {
public static void main(String[] args)
{
/**
* hashCode对象的test
*/
String n="hello";
double salary=12.0;
Double salary1=new Double(salary); //有这个就可以运行
LocalDate hireDay= LocalDate.now(); //而不是 LocalDate hireDay=new LocalDate();
System.out.println(n.hashCode());
System.out.println(salary1.hashCode());
System.out.println(hireDay.hashCode());
}
}
对比与以下就不可以运行
package inheritance;
import java.time.*;
/**
*
* @author cmx
*/
public class hashCode {
public static void main(String[] args)
{
/**
* hashCode对象的test
*/
String n="hello";
double salary=12.0;
// Double salary1=new Double(salary); 注意
LocalDate hireDay= LocalDate.now(); //而不是 LocalDate hireDay=new LocalDate();
System.out.println(n.hashCode());
System.out.println(salary.hashCode()); //注意salary而不是salary1
System.out.println(hireDay.hashCode());
}
}
区别在于:double salary; 中salary不是对象
而Double salary1=new Double(salary);构造了一个对象
hashCode只能做用于对象
将double类型的数值的hashCode方法,除了将double转为Double,还可以采用以下方法:
Double.hashCode(double value)
例如:
package inheritance;
import java.time.*;
/**
*
* @author cmx
*/
public class hashCode {
public static void main(String[] args)
{
/**
* Double.hashCode
*/
double salary=12.0;
System.out.println(Double.hashCode(salary));
/**
* run:
1076363264
成功构建 (总时间: 0 秒)
*/
}
}