基本数据类型(四类八种)
- 整数型:byte、shout、int、long
- 浮点型:float、double
- 布尔型:boole
- 字符型:char
思维导图
基本数据类型间的转换:
实例代码:
public class Test01{
public static void main(String[] args){
int a = 129;
byte b =(byte)a;
System.out.println(b);//b为-127
}
}
分析:
- 128的二进制是:10000000
- int类型的128二进制表示为:00000000 00000000 00000000 10000001
- 这里的输出结果是-127
- 为什么会这样呢?
- 原因在于int类型的变量在内存中是占32位
- 强制转换为byte类型,byte是8位
- 也就是说byte类型变量接收转变后会将int类型的前面24位会舍去
- 只按照8位算
- byte类型的128是:10000001
- 由于最高位是符号位:1代表是一个负数
- 而存在内存中的这八位是(负数在计算机中是以补码的形式存在)
- 补码转换成原码:减1取反
- 所以:100000001-1=10000000 取反:11111111
- 最高位是符号位,所以-(64+32+16+8+4+2+1)=-127
注意:综上所述,强制转换需谨慎,不超过转换后的范围还好,超过了范围会失精度。
运算符
+= | a+=b | a=a+b |
-= | a-=b | a=a-b |
*= | a*=b | a=a*b |
/= | a/=b | a=a/b |
%= | a%=b | a=a%b |
注意:byte a += 3; byte a = a +3 他们是不同的,因为a + 3是一个int类型,如果要赋值给byte a 就需要强制转换。