1.不同容量大小的数据类型转化:
a.高容量转低容量
long-int : 编译失败(规律);
int-byte/short : (特列) 未超过目标的数据范围时12:编译通过,运行正常;(同样的还有char类型)
超过目标的数据范围时,例1200:编译失败
b.低容量转化为高容量:
通过(规律)
c.强制类型转换:
未超出范围,则正常;超出范围则数据错误
d.不同类型之间的逻辑计算:double+int double*int*int*int(d放前边)
2.各进制的表示形式
java里不能这样表示二进制,只能是 8,10,16进制
8: 前置010: 不需前置
16: 前置 0x 或者 0X
int a7 = 010;
int a8 = 0x10;
System.out.println(Integer.toBinaryString(12));
System.out.println(Integer.toOctalString(12));
System.out.println(Integer.toHexString(12));
3.字节
byte-1,short-2,int-4(默认,+-21亿左右),long-8字节 BigInteger
float-4,double-8(默认)----科学计数法:double d = 314e-2;
4.float和int同占四个字节,但大小差别问题:
int : -2e31到2e31-1,可以精确表示该范围内的整数
float: 不能精确的表示所有的浮点数,其组成是:1位符号位+8位指数(q)+23位底数(b),其解释出来的形式是:b^q,由于指数q是8位有符号整数,范围是-128 ~ 127,23位的底数(无符号)最大值就是2 ^ 23,算上指数的话,最大可以表达到2 ^ 23 ^ 127
5.float,double
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38 1位符号位+8位指数(q)+23位底数(b)
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308 1位符号位+11位指数(q)+52位底数(b)
浮点数存在舍入误差,故尽量避免等等比较;银行系统中使用BigDecimal
public static void main(String[] args) {
double d = 1.0/10;
float f = 0.1f;
System.out.println(f==d); //false;
d = 0.1;
System.out.println(f==d); //false;
f = 1.0f;
d = 1.0;
System.out.println(f==d); //true;
}
6.Integer,int
拆箱,封装
7.char:
使用unicode编码,0-65535个字符;占用2个字节
\n
|
换行(LF) ,将当前位置移到下一行开头
|
010
|
\r
|
回车(CR) ,将当前位置移到本行开头
|
013
|
\t
|
水平制表(HT) (跳到下一个TAB位置)
|
009
|