八种基本数据类型的运算:自动类型提升与强制类型转换
(只讨论7中基本数据类型之间的运算,不包括boolea类型)byte/short/int/long/float/double
1.自动类型提升:
当容量小的数据类型变量与容量大的数据类型变量做运算时,结果自动提升为容量大的数据类型。
(容量大小只这种数据类型能表示数的大小而不是所用内存空间的大小)
byte->short->int->long->float->double
特别的当byte ;char;short 三种类型变量做计算时,结果为int类型。即这三种类型平等
char a =97;
2.强制类型转换
即自动类型提升的逆运算(将高的赋值到低的)
需要使用强转符,并且可能导致精度损失
3.两个特殊情况
- 编码情况1:使用long型数据类型没加L/l;系统将会其视作int。
- 编码情况2:整型常量会被看作int型,浮点型常量默认为double型。
String(引用数据类型)的使用:
- 声明String变量时,用“ ”;
- String可以和8种基本数据类型做运算,且运算只能是连接运算,不能进行数的计算,最终运算结果为String;
- 用int或其他基本数据类型输出String,方法:Integer.parseInt
进制
- 二进制:以0b或0B开头,满二进一。最高位为符号位0表正,1表负,即原码。正数的原码、补码、反码相同。负数的反码:除符号位外,对原码各个位取反。负数的补码:反码加一。
- 八进制:满8进一,以数字0开头
- 十进制:0-9,满10进一
- 十六进制:0-9及A-F,满16进1,以0X或0x开头
计算机底层都以补码的方式存储数据
进制间的转换:
- 二进制与十进制的转换 :10->2除二取余
- 其他进制与二进制之间相互转化:2->8 3个算一位其三位 中求十进制 2->16 4个算一位其中4位求十进制值
运算符:
- 算数: %取余数,且结果符号与被求余数有关 / 自增不会改变数据的类型
- 赋值
- 比较
- 逻辑
- 位
- 三元