Java基本数据类型,强制数据类型转换
Java基本数据类型:
byte(字节型) 占用1个字节 一个字节等于八位 等于范围负128到127
short(短整型) 占用2个字节
int(整型) 占用4个字节
long(长整型) 占用8个字节
float(单精度浮点型) 占用4个字节
double(双精度浮点型) 占用8个字节
char(字符型) 占用2个字节 单引号包裹的字符,只能是一个字符 数值参考ASCII码表
boolean 占用一个字节或者四个字节 单独使用boolean类型,占用四个字节,当表示数组boolean[],占用一个字节 值只用两种,要么是true,要么是false
数据类型转换
=左右两边数据类型不一致
自动数据类型转换
小的数据类型转为大的数据类型,是隐式的,可以自动转换
例:double d=1.0F;
强制数据类型转换
小的数据类型 变量名=(小的数据类型)大的数据类型数据
大的数据类型转换成小的数据类型,可能会造成数据溢出,就像两个水桶不一样的容量,容量高的水桶把水倒入容量低的水桶,会造成水浪费一样,同理大的数据类型的数据强制类型转换为小的数据类型可能会造成数据溢出,数据的不准确
例:int a=(int)6L;
byte b=(byte)-129;
System.out.println(b); //127,计算机存储方式
为什么byte b=(byte)-129 ; b=127和计算机的存储方式有关
负数 -129
原码 10000000 00000000 00000000 10000001
反码 01111111 11111111 11111111 01111110
补码 01111111 11111111 11111111 01111111
因为强制转换为byte类型,byte占用一个字节等于八位,所以我们取补码后八位也就是01111111 也就是127
那么计算机存储方式是怎么计算反码和补码的呢?
只要记住
反码=原码取反
补码=反码+1
注意:最高位是符号位