码迷,mamicode.com
首页 > 编程语言 > 详细

java基础数据类型

时间:2021-06-15 18:30:02      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:符号   sdn   溢出   rgba   计算机科学   选择   value   tps   net   

8 种基本数据类型

  Java 中有 8 种基本数据类型分为三大类。

字符型

  char

布尔型

  boolean

数值型

  1.整型:byte、short、int、long

  2.浮点型:float、double

String 不是基本数据类型,是引用类型。

整型中 byte、short、int、long 的取值范围

  Java 中的整型主要包含 byte、short、int 和 long 这四种,表示的数字范围也是从小 到大的,之所以表示范围不同主要和他们存储数据时所占的字节数有关。

 

  先来个简答的科普,1 字节=8 位(bit)。java 中的整型属于有符号数。

 

  先来看计算中 8bit 可以表示的数字: 最小值:10000000 (-128)(-2^7) 最大值: 01111111(127)(2^7-1) 具体计算方式参考:

Java 中,为什么 byte 类型的取值范围为-128~127?

整型的这几个类型中:

  byte:byte 用 1 个字节来存储,范围为-128(-2^7)到 127(2^7-1),在变量初始 化的时候,byte 类型的默认值为 0。

 

  short:short 用 2 个字节存储,范围为-32,768 (-2^15)到 32,767 (2^15-1), 在变量初始化的时候,short 类型的默认值为 0,一般情况下,因为 Java 本身转型的原因, 可以直接写为 0。

  

  int:int 用 4 个字节存储,范围为-2,147,483,648 (-2^31)到 2,147,483,647 (2 ^31-1),在变量初始化的时候,int 类型的默认值为 0。

 

  long:long 用 8 个字节存储,范围为-9,223,372,036,854,775,808 (-2^63) 到 9,223,372,036, 854,775,807 (2^63-1),在变量初始化的时候,long 类型的默认值 为 0L 或 0l,也可直接写为 0。

 

  上面说过了,整型中,每个类型都有一定的表示范围,但是,在程序中有些计算会导致 超出表示范围,即溢出。如以下代码:

int i = Integer.MAX_VALUE; 
int j = Integer.MAX_VALUE; 
  int k = i + j; 
  System.out.println("i (" + i + ") + j (" + j + ") = k (" + k + ")");

输出结果:

i (2147483647) + j (2147483647) = k (-2)

 

  这就是发生了溢出,溢出的时候并不会抛异常,也没有任何提示。所以,在程序中,使 用同类型的数据进行运算的时候,一定要注意数据溢出的问题。

什么是浮点型?

  在计算机科学中,浮点是一种对于实数的近似值数值表现法,由一个有效数字(即尾数) 加上幂数来表示,通常是乘以某个基数的整数次指数得到。以这种表示法表示的数值,称为 浮点数(floating-point number)。

 

  计算机使用浮点数运算的主因,在于电脑使用二进位制的运算。例如:4÷2=2,4 的 二进制表示为 100、2 的二进制表示为 010,在二进制中,相当于退一位数(100 -> 010)。

 

  1 的二进制是 01,1.0/2=0.5,那么,0.5 的二进制表示应该为(0.1),以此类推,0.25 的二进制表示为 0.01,所以,并不是说所有的十进制小数都能准确的用二进制表示出来, 如 0.1,因此只能使用近似值的方式表达。

 

  也就是说,,十进制的小数在计算机中是由一个整数或定点数(即尾数)乘以某个基数 (计算机中通常是 2)的整数次幂得到的,这种表示方法类似于基数为 10 的科学计数法。

 

  一个浮点数 a 由两个数 m 和 e 来表示:a = m × be。在任意一个这样的系统中, 我们选择一个基数 b(记数系统的基)和精度 p(即使用多少位来存储)。m(即尾数)是 形如±d.ddd...ddd 的 p 位数(每一位是一个介于 0 到 b-1 之间的整数,包括 0 和 b-1)。 如果 m 的第一位是非 0 整数,m 称作正规化的。有一些描述使用一个单独的符号位 (s 代表+或者-)来表示正负,这样 m 必须是正的。e 是指数。

 

  位(bit)是衡量浮点数所需存储空间的单位,通常为 32 位或 64 位,分别被叫作单精 度和双精度。

什么是单精度和双精度?

  单精度浮点数在计算机存储器中占用 4 个字节(32 bits),利用“浮点”(浮动小数 点)的方法,可以表示一个范围很大的数值。

 

  比起单精度浮点数,双精度浮点数(double)使用 64 位(8 字节) 来存储一个浮点数。

为什么不能用浮点型表示金额?

  由于计算机中保存的小数其实是十进制的小数的近似值,并不是准确值,所以,千万不 要在代码中使用浮点数来表示金额等重要的指标。

 

  建议使用 BigDecimal 或者 Long(单位为分)来表示金额。

java基础数据类型

标签:符号   sdn   溢出   rgba   计算机科学   选择   value   tps   net   

原文地址:https://www.cnblogs.com/huashuai946/p/14885003.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!