星星之火-double与Double的区别

本文最后更新于:December 3, 2021 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

  1. 数据类型。double是基本数据类型,Double是原始数据类型。Double是java定义的类,而double是预定义数据类型(8种中的一种)
  1. 存放位置。double存放在栈中,Double存放在堆中。
  1. 属性与方法。double没有方法,Double有自己的属性和方法。
  1. 其他:
  • double只创建引用,Double创建对象。hashCode只能做用于对象。

  • 集合类不能存放double,只能存放Double。

  • 栈的存取速度要高于堆,另外栈中的数据可以共享。

  • 从效率来讲用double合适,而Double提供的属性和方法会使操作各种操作更加方便和灵活。

  • Double就好比是对double类型的封装,内置很多方法可以实现String到double的转换,以及获取各种double类型的属性值(MAX_VALUE、SIZE等等)。

1.数据的共享

数据共享,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// double
double a = 0;
double b = 0;
//不会创建对象,只会建立两个引用,同时指向变量“0”(栈数据共享)

// Double
Double a = new Double(0);
Double b = new Double(0);
//会创建两个对象,即使对象所代表的值一样(堆数据不共享)
System.out.println(mdd==midd); //false ,==符号比较的是地址,equals比较的是值

//示例
double a = 1.0;
double b = 1.0;
Double c = 1.0;
Double d = 1.0;
System.out.println(a == b); // true
System.out.println(c == d); // false

double定义的不能为NULL,Double是可以为NULL的。

1
2
double qw = null; //报错
Double qqw = null;

2.计算哈希值

1
2
3
4
5
6
7
8
9
10
11
12
double ew = 234.324;
// 1.直接计算hash值
System.out.println(Double.hashCode(ew));
// 2.先将double转化为Double,再求hash值
Double re = new Double(ew); // double转化为Double
System.out.println(re);
System.out.println(re.hashCode());

//输出
1968322224
234.324
1968322224

本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/2975857479.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!