Java编程思想第四版,这本书不建议初学者碰,因为都总结好了,太容易得到的往往不深刻,最好把这本书当作一本印证自己在java这块所学的书,起到查漏补缺的作用。一句话,要夯实根基。
1.对象导论
基本类型
boolean没有明确具体几个字节 1个4个都有可能
boolean | - |
---|---|
char | 2 |
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
数值类型都有编号
2.一切都是对象
3.操作符
基本类型和对象数组的引用都放在栈中,且都是定长
==或者!=比较的是:基本类型和对象数组的引用
整型默认是int
浮点型默认是double
Float b = 2e-1f;
f必须加,也只能是float不能double,e不是自然对数的基数,而是10
按位操作符
与&、或|、异或^、非~
移位操作符
对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会有用。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。
2的5次方32,2的6次方64
int不能超过2的32
1<<>>35 = 1<<>>(35%32) = 1<<>>3,
左移结果即便这样还是可能超出int最大值,到时候溢出可能负数
左移<<,低位补0;每左移动一位,效果等同于乘以2;2X8,最有效率的方法就是将2左移位3次
右移>>(>>>),有符号:负数高位插入1,正数高位插入0;无符号:高位插入0(就是跟随被移位的数的符号走);效果就是除以2,按最低的2的倍数算,31>>2等同于28>>2
-32>>4=-2 -32>>5=-1... -32>>22=-1
正数右移趋向于0
负数右移趋向于-1
4.执行控制流程
5.初始化与清理
finalize()方法是垃圾回收的时候会执行这个方法,不是主动调用就能执行垃圾回收,垃圾回收只与内存有关。
finalize()其实是给本地方法(可能调用了c的方法非java方法,而且涉及到了分配内存,所以这个finalize()中调用c的free()方法可以释放c方法中分配的内存)
c++栈中分配对象空间是划地盘的方式,各自管理各自的地盘
java栈中分配对象,由于gc介入,所有会将堆中对象紧凑排列,实现高速无限空间可供分配的堆模型
自适应的、分代的、停止-负责、标记-清扫 式垃圾回收器