java编程思想

2017-07-31  本文已影响28人  laidian

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介入,所有会将堆中对象紧凑排列,实现高速无限空间可供分配的堆模型

自适应的、分代的、停止-负责、标记-清扫 式垃圾回收器

6.访问控制权

上一篇下一篇

猜你喜欢

热点阅读