您的位置:首页 > 编程语言 > Java开发

Java基本数据类型

2017-01-14 17:36 267 查看
众所周知,Java语言内置基本数据类型共分为4类8项,分别为:

整型 byte/short/int/long

浮点型 float/double

布尔型 boolean

字符型 char

  之所以分这么多种类的原因,不外乎一个很简单的道理,一个萝卜一个坑。倘若我们声明了一个long类型的变量,而只给它赋值:123。那无异于为了1个人住了一套别墅。对于空间的利用存在着极大的浪费。而再比如声明了boolean类型,却还是要给其赋值:123,那就无异于问别人吃了没,而他回答你:今天天气很好。

  故Java这种分类方式首先是考虑了类型匹配,再次是考虑了对于需要开辟的空间大小的合理利用。

  

  下面通过具体表格的形式分别介绍对应的空间大小及所表示的值范围。

类型名称占用存储空间表数范围
byte字节类型1字节-128 — 127
short短整型2字节-32768 — 32767
int整型4字节-2147483648 — 2147483647
long长整型8字节-9223372036854775808 — 9223372036854775807
float单精度4字节-3.403E38 — 3.403E38
double双精度8字节-1.798E308 — 1.798E308
char字符型2字节0 – 65535
boolean布尔型1位true/false
  上表中值得注意的是:

  1、存储空间大小,1字节(byte)=8位(bits)。

  2、以byte示例,为何表数范围如表所示。因Java中首位为符号位(0为正,1为负),故只有另七位可自由排列组合。那么正数最大即为01111111,转换为10进制就是127。负数最小理论上是11111111,但因为计算机内存储数字是通过补码的形式(有关原码、补码、反码等请大家自行百度),及对11111111进行取反+1可得到1,0000,0000转换为10进制即为128,所以最小数为-128。

  3、float/double中E即底为10,E38即为10^38。

  4、char大小为64位,原因为: Java采用unicode编码,为64位。即所有字符(包括键盘上符号、字母,中文,日文,韩文 等等)都在这64位=65536个范围之内。例如使用char a=’\u4e70’(\u表示使用unicode编码,4e70为16进制),a即为”买”字。

  另补充几点有关转型

  1、 不能对boolean类型进行类型转换。

  2、不能把对象类型转换成不相关类的对象。

  3、在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

 
4000
 float a = (float)1.23;

  4、 转换过程中可能导致溢出或损失精度,例如:

  int i =128;

  byte b = (byte)i;

  因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。

  5、 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

  (int)23.7 == 23;

  (int)-45.89f == -45

  6、int 之下(byte short)的整型相加减等,都是先转换为int。

  byte a = 1;

  byte b = 2;

  byte c = a + b;

  这样会报错。因为a + b已经为int类型。故需要强转。byte c = (byte) (a + b);

时间不早了,以后想到或用到补充。– end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: