Java-数据类型

(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
  A:基本数据类型:4类8种
  B:引用数据类型:类,接口,数组。
(3)基本数据类型
  A:  整数 占用字节数
     byte    1
     short   2
     int       4
     long    8

  B:  浮点数
     float    4
     double     8

  C:  字符
     char    2
  D:  布尔
    boolean    1

注意:
Java整数默认是int类型,浮点数默认是double。
所以这样写 float i = 4.0则会报错,正确的写法:float i = 4.0f或者float i = (float)4.0

double与float的区别

我们要认识他们的区别就应该先认识浮点数(小数)在 计算机底层是怎么样存储的

一个小数在计算机的存储是这样的,首先我们把一个小数转换为二进制表示,然后用科学计数法表示这个数

例如78.375用二进制的科学计数法表示如下:1.001110011 x 2^6

计算机中,保存这个数使用的是浮点表示法,分为三大部分(如下图所示,图片来自维基百科):

第一部分用来存储符号位(sign),用来区分正负,这里是 0,表示正数,1则表示为负数

第二部分用来存储指数(exponent),这里的指数是十进制的 6

第三部分用来存储小数(fraction),这里的小数部分是 001110011

在Java中float占用字节数为4个字节,那么就是占用了32位,Java单精度浮点表示法:

符号位(sign)占用1位,用来表示正负数。

指数位(exponent)占用 8 位,用来表示指数。

小数位(fraction)占用 23 位,用来表示小数,不足位数补 0。

而 double 占用字节数为8个字节,那么就是占用了 64 位,Java双精度浮点表示法:

符号位占用 1 位,指数位占用 11 位,小数位占用 52 位

我们很容易就可以知道一个数的大小取决于它的指数大小,一个数表示的精确度取决于它的小数能够表达的位数

我们知道float的指数位8,小数位为23,而double的指数位为11位,小数位为52位。所以我们可以得出的结论就是

double比float能表示的数更大更加精确

Java中数据类型的转换

(1)boolean类型不参与转换
(2)默认转换
  A:从小到大(比如int i = 1;long x = i;)
  B:byte,short,char -- int -- long -- float -- double
  C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
  A:从大到小(比如long = 1;int x = i;)
  B:这样在不知道数据的大小的时候可能会有数据精度的损失,一般不建议这样使用。

 

 

posted @ 2019-12-03 16:22  问鱼  阅读(174)  评论(0)    收藏  举报