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

java 中的基本数据类型认识

时间:2017-09-09 11:48:30      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:值类型   注意   精度   32位   不能   也有   是什么   算术   oat   

  Java是强类型语言,它的真正意思是我们在程序中写的任何数据都有类型,就算是写一个123,它也有类型。那它是什么类型呢?我们并没有对其进行类型声明啊?如果没有声明类型,那就采用默认类型。对于整数来说,默认类型为int, 小数的默认类型则是double. 字符类型为char等。

  举一个例子,float f = 3.14; 程序就会报错。因为3.14是小数,默认类型是double, 而声明的变量f 是float 类型,我们正在把一个double类型的值赋值给一个float类型,而float类型的精度比double类型小,所以报错了,损失精度了。变量赋值的时候要在小数后面加f, float f = 3.14f; f 表明它是一个float类型。

  默认数据类型还有一个易错的地方,那就是在做算术运算的时候,例如,byte b = 4; b = b+3; 这也会报错。计算时,先计算右边b+3; b 是一个byte类型,3是int 类型(默认类型), 那就是byte 类型 + int类型,按理说,不同数据类型之间是不能进行计算的,但对于数值类型来说,有所不同,java会进行自动类型转化。自动类型转化,也叫自动类型提升,就是把小类型转化成大类型,在这里,就是把byte类型转化成int类型然后再进行计算,右边是int 类型的数字7,  最后进行赋值运算,把int类型赋值给byte 类型,肯定报错了。如果让计算成立,那要用到强制类型转换。

  强制类型转换则是在要转换的数据前面加上它要转换成的类型,如 byte b = (byte) 4, 就是把int 类型的4 转换成了byte类型,byte一定要用括号括起来。上面操作 byte b = (byte) b+3; 就没有问题了。但是强制类型转换最大的问题是丢失数据,因为它的工作原理是舍弃高位,这里的位是二进制位。int 类型的数据在内存中占32位,如 int 4 在内存中的表示是 00000000 00000000 00000000 00000100,而byte 类型在内存中只占8个字节, 把int 类型转换成byte 类型,就要把前面24个字节全部舍弃, 00000000 00000000 00000000 00000100 变成 00000100, 如果前面24个二进制位有数据,那就舍弃了,肯定丢失数据了,所以在真正的程序中很少用到强制类型转换。

  对于java 的强类型,还要注意的是运算两端一定要数据类型相同,如果数据类型不同,是无法进行计算的,数值类型除外,因为自动类型的提升。

java 中的基本数据类型认识

标签:值类型   注意   精度   32位   不能   也有   是什么   算术   oat   

原文地址:http://www.cnblogs.com/SamWeb/p/7496792.html

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