学习记录(二)
Java的八种基本类型
byte:每个byte类型占8字节,取值范围是-128~127
short:每个short类型占16字节,取值范围是-2^15~ (2^15-1)
int:每个int类型占32字节,取值范围是-2^31~ (2^31-1)
long:每个long类型占64字节,取值范围是-2^63~ (2^63-1)
以上四种为整数类型
float:每个float类型占32字节,取值范围是-3.4*10^(-38)~3.4 *10^(38),有效位是7位
double:每个double类型占64字节,取值范围-1.7 *10^(-308)~1.7 *10^(308),有效位是15~16位
以上类型为数值类型,Java内均为有符号类型,都是有正有负
char:char类型根据编码决定,最少是8位,可以为16、32,偶尔会出现24位
char类型所占位数都是8的倍数,即2的指数级关系
boolean:boolean类型占32字节
- 所有其他类型,都是由八种基本类型组装起来的
- 可以用byte类型表示其他基本类型,比如:int类型可以用4个byte类型组合表示
- long、double类型有个线程不安全问题,CPU和内存交互时一次传输36~41位(和内存条相关),所以传输long和double类型时,需要分两次传输,故在传输时两次之间有被切换线程的危险造成并发不安全
- 当传输的数据过短时,运行高速缓存行时容易被其他线程锁定不能读取,和其他存在同一块内存的数据互相锁定,影响并行计算的能力
- 如果不想被互相锁定,就需要数据足够大可以独占一块内存,因此数据要达到适中的大小
- 故boolean类型虽然只用传递True或False,但为了避免互相锁定的问题,故填充了字符,也可以因此加快执行速度
- 高速缓存行也有基本单元,在读取时会整个锁定
- 八种基本类型都不是安全的,比如计算精度(缠超过精度的话+或*都有可能得到负数),所以计算调用时需要注意
补码
- 用1开头表示为负数 :如11000111
用补码表示每个数,负数的补码:除了符号位外,其他位取反,然后再+1
补码还原到原码:(1)-1,取反 (2)取反,然后+1 - 用0开头表示为正数 如:00010101
正数的补码是他本身 - 处理器只有加法运算,加减负数的话只能先把它变成证书,故用到反码
- 为了不浪费,符号位不止表示符号,还可以表示数据
数据结构
数据结构基本内容: