摘要
- 进制表示
- 原码反码补码
- 变量和数据类型
- 运算符
进制表示法
二进制 0b 开头
八进制 0 开头
十六进制 0x开头(0-9,a,b,c,d,e,f)
其中字母大小写都可以
原码反码补码
用于强制类型转换
原码:二进制定点表示法,最高位为符号位,“0”表示正,“1”表示负,其余位表示数值大小。(问题:两个相反数相加应该为0,但是原码表示的两数相加不为0)。
反码:正数反码与原码相同,负数是对原码逐位取反,符号位除外。
补码:正数的补码与原码相同,负数是在反码末位加1。(计算机用补码运算)
变量和数据类型
Java是强类型语言,预分配数据空间。
- byte 占一个字节 -128~127
- short 占两个字节 -215~215-1
- int 占四个字节 -231~231-1
- long 占八个字节 -263~263-1
- float 占四个字节 -3.403e38~3.403e38
- double 占八个字节 -1.798e308~1.798e308
- char 占两个字节 0~65535(2^16-1)
- boolean 理论上八分之一,即一个比特位就可以确定,但是java中未明确指定大小
小数默认数据类型为double,整数为int,使用float时需要在后面加f,如1.23f,否则会报错可能损失精度。使用long类型时应在后面加l。(此条现在已不需要)
隐式类型转换:两种数据类型的数据运算时,结果自动转换为长度较大的那个的数据类型。
强制类型转换:超出数据类型限制的时候会产生意外的结果,此时需要砍掉一部分数据。产生的为补码,转换为原码可得到此意外的结果值。
两个byte或short类型相加时产生的结果默认为int,常数也默认为int类型,需要将其赋给byte或short时需要强制类型转换。
float共32个二进制位,1位代表符号位,8位表示指数位,23位代表尾数位。(IEEE 754规定)指数位为0~255,0代表0,255代表无穷大,1-254计算时须减去127获得实际指数值。
char c = 97 可以运算,其结果为ASCII码为97的字符
char同样可以储存单个汉字,因为Java使用Unicode编码,char占两个字节,可以容纳同样占两字节的汉字。
运算符
+号三种作用:正号,加法,字符串连接;
取模运算符结果的符号只和左边有关,和右边无关
byte a;a=a+1会报错,而a++不会,a+=1也不会。