深入理解java虚拟机第二版和第三版的区别?

Python09

深入理解java虚拟机第二版和第三版的区别?,第1张

区别:

第三版是一款针对java学习打造的图书,它从Java程序员的角度出发,系统地将Java程序运行过程中涉及的各种知识整合到了一起,而第二版不仅技术更新、内容更丰富,而且实战性更强。

【第二版】

《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。

第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解书中后面内容有重要帮助。

第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见虚拟机监控与故障处理工具的原理和使用方法

第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。

第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果;

第五部分探讨了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。

【第三版】

深入理解java虚拟机第三版pdf是一款针对java学习打造的图书,它从Java程序员的角度出发,系统地将Java程序运行过程中涉及的各种知识整合到了一起,并配以日常工作中可能会碰到的疑难案例,引领读者轻松踏上探索Java虚拟机的旅途。

一般来说,外部类调用内部类的方法分为以下几种情况:

1.使用static可以声明一个内部类, 可以直接在外部调用

// 定义外部类

class Outer

{

// 定义外部类的私有属性

private static String info = "hello world"

// 使用static定义内部类

static class Inner

{

// 定义内部类的方法

public void print()

{

// 直接访问外部类的私有属性

System.out.println(info)

}

}

// 定义外部类的方法

public void fun()

{

// 通过内部类的实例化对象调用方法

new Inner().print()

}

}

public class InnerClassDemo03

{

public static void main(String args[])

{

// 通过Outer.Inner创建内部类的实例,并调用它的print方法

new Outer.Inner().print()

}

}

2.不使用statc声明一个内部类 ,使外部调用

//定义外部类

class Outer

{

//定义外部类的私有属性

private String info = "hello world"

//定义内部类

class Inner

{

//定义内部类的方法

public void print()

{

//直接访问外部类的私有属性

System.out.println(info)

}

}

//定义外部类的方法

public void fun()

{

//通过内部类的实例化对象调用方法

new Inner().print()

}

}

public class InnerClassDemo04

{

public static void main(String args[])

{

//外部类实例化对象

Outer out = new Outer()

//实例化内部类对象

Outer.Inner in = out.new Inner()

//调用内部类的方法

in.print()

}

}

3.在方法中定义内部类 ,使外部调用

//定义外部类

class Outer

{

//定义外部类的私有属性

private String info = "hello world"

//定义外部类的方法

public void fun(final int temp)

{

//在方法中定义的内部类

class Inner

{

//定义内部类的方法

public void print()

{

//直接访问外部类的私有属性

System.out.println("类中的属性:" + info)

System.out.println("方法中的参数:" + temp)

}

}

//通过内部类的实例化对象调用方法

new Inner().print()

}

}

public class InnerClassDemo05

{

public static void main(String args[]){

//调用外部类的方法

new Outer().fun(30)

}

}

《深入理解Java虚拟机:JVM高级特性与最佳实践-周志明》电子书百度网盘资源下载:

链接: https://pan.baidu.com/s/10SXSALpvlFQzmfDOmbSqnw

提取码: kpf4    

深入理解Java虚拟机:JVM高级特性与最佳实践-周志明