建设郑州企业的网络平台有何益处?
摘要:东莞便宜做网站,郑州企业建设网站有什么用,弄一个app大概多少钱,ueditor html 转 wordpress3.编译期处理 编译期优化称为语法糖 3.1 默认构造器 3.2 自动拆装箱 java基本类型和包装类型之间的自动转换。 3.
东莞便宜做网站,郑州企业建设网站有什么用,弄一个app大概多少钱,ueditor html 转 wordpress3.编译期处理
编译期优化称为语法糖 3.1 默认构造器 3.2 自动拆装箱
java基本类型和包装类型之间的自动转换。 3.3泛型集合取值 在字节码中可以看见#xff0c;泛型擦除就是字节码中的执行代码不区分是String还是Integer了#xff0c;统一用Object. 对于取出的Object…3.编译期处理
编译期优化称为语法糖 3.1 默认构造器 3.2 自动拆装箱
java基本类型和包装类型之间的自动转换。 3.3泛型集合取值 在字节码中可以看见泛型擦除就是字节码中的执行代码不区分是String还是Integer了统一用Object. 对于取出的Object这个checkcast用于转换Object为Integer类型。 可以看见局部变量类型表里面包含了方法参数的泛型信息。 泛型反射 输出里拿到了两个参数的原始类型List和Map。
这里除了能拿到方法参数上的泛型信息还能拿到返回值的泛型信息。 3.4可变参数 3.5 foreach 循环 如果遍历的是List集合生成代码如下 3.6 switch 字符串 一个switch变成了两个switch通过字符串的哈希码进行匹配。 3.7 switch 枚举 3.8枚举类 这玩意的本质也是一个class,里面的两个值就是这个class的两个实例对象。
跟普通类的最大区别普通类的实例个数是无穷枚举类的实例个数有限。
转换后因为这个class不能再被继承所以加上了final关键字。并继承了一个支持泛型的枚举父类 3.9 try-with-resources
主要作用是简化资源的关闭只要按照下面的语法在try后面括号内进行资源的创建就可以省略finally中的资源关闭。 编译器会帮助生成finally的代码。 3.10方法重写时的桥接方法 编译器多加了一个真正的方法重写在其内部调用了我们重写的m方法返回Integer。
该合成方法可以重名只在jvm内部使用。 3.11匿名内部类 额外生成的这个类是外部类名称$1 因为转换后的类已经变成有两个方法了所以要加多一个参数接收传进来的x,并传给run方法。
匿名内部类引用外部局部变量必须是finall的原因。 4.类加载阶段
类的生命周期有如下阶段 加载Loading在加载阶段类的字节码被加载到JVM的内存中。这包括从文件系统、网络等位置加载类的字节码并将其转换为JVM能够理解的数据结构。加载阶段的结果是在方法区Method Area创建一个代表该类的Class对象。 连接Linking连接阶段将加载的类与其他类和资源进行关联以便正确地解析和执行。连接阶段可以进一步分为三个子阶段 验证Verification验证阶段确保类的字节码符合JVM规范并且不会引发安全问题或错误。准备Preparation在准备阶段为类的静态变量分配内存并初始化为默认值例如数值类型初始化为0引用类型初始化为null。解析Resolution解析阶段将符号引用如类、方法、字段的符号名称解析为直接引用以便在后续的执行阶段中能够准确访问相关内容。 初始化Initialization初始化阶段是类生命周期中的关键阶段它负责执行类的静态初始化代码块和静态变量的赋值。在该阶段JVM确保静态变量按照预期值进行初始化静态初始化块被执行构造器也可以被调用但仅限于初始化静态字段。初始化阶段标志着类已准备好被使用。 使用Usage在初始化阶段之后类就可以被使用了。这包括通过创建对象、调用类的方法、访问静态变量等方式来使用类。 卸载Unloading如果某个类不再被引用JVM可能会在某些情况下将其卸载释放对应的内存和资源。类的卸载是一个可选的过程通常由垃圾回收器决定。
需要注意的是类的生命周期可能因为具体的JVM实现、加载方式、类加载器等因素而有所不同。上述阶段的顺序和细节可能会因JVM的版本和配置而有所变化。
从大方面来说分为加载连接和初始化阶段。
4.1加载
加载阶段Java虚拟机需要完成以下三件事
通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表这个类的java.lang.Class对象作为方法区这个类的各种数据的访问入口 java_mirror属性起到桥梁作用c数据结构和java的桥梁java的对象要想访问它的Klass信息不能直接访问要通过java_mirror镜像访问。
常用的XXX.class不是指Klass,而是java_mirror。
如果该类有父类或接口没有加载会先加载父类和接口才会轮到这个类加载。
