Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
Java进阶知识点汇总 PDF 下载
发布于:2024-03-30 15:28:50
(假如点击没反应,多刷新两次就OK!)

Java进阶知识点汇总 PDF 下载  图1

 

 

资料内容:

 

 

(一)关键字
 
1static
修饰变量、方法、静态块、静态内部内、静态导包。
随着类的加载而加载,只执行一次,并优先于主函数。存在于方法区中。
 
2final
1.final 修饰的部分
类、方法、域、方法参数
2.作用
a.设计上:被 final 修饰的类不能被继承;被 final 修饰的方法不能被重写;被
final 修饰的变量的引用不能被修改。
b.效率上:被 final 修饰后,内联(inline Java 中就是编译器为程序做的一种
优化操作)会起作用。
备注:内联是发生在编译期的一个优化操作。所做的优化操作的意义在于两个字
替换
3.为什么 Java 匿名内部类访问的外部局部变量或参数需要被 final 修饰?
内部类对象的生命周期会超过局部变量的生命期。
局部变量的生命期:当该方法被调用时,该方法中的局部变量在栈中被创建
(诞生),当方法调用结束时(执行完毕),退栈,这些局部变量全部死亡。而:
内部类对象生命期,与其它类一样,当创建一个该局部类对象后,只有没有其它
人再引用它时,它才能死亡。完全可能:一个方法已调用结束(局部变量已死亡),
但该局部类的对象仍然活着。即:局部类的对象生命期会超过局部变量。
 
3transient
transient 关键字标记的成员变量不参与序列化过程。
 
4volatile
作用
1.如果一个字段被声明成 volatilejava 线程内存模型确保所有线程看到这个变量
的值是一致的。
2.禁止指令重排序。(jdk5 或更高版本)
它比 synchronized 的使用和执行成本会更低,因为它不会引起线程上下文的切换和调
度。
volatile 是基于 Memory Barrier 实现的。如果一个变量是 volatile 修饰的,
JMM 会在写入这个字段之后插进一个 Write-Barrier 指令,并在读这个字段之前
插入一个 Read-Barrier 指令。
Write-Barrier(写入屏障)将刷出所有在 Barrier 之前写入 cache 的数据,因
此,任何 CPU 上的线程都能读取到这些数据的最新版本。
底层基于 C++volatile 实现,因为 volatile 自带了编译器屏障的功能,总
能拿到内存中的最新值。