类实例化顺序讲解 附阿里巴巴一道笔试题

Violet ·
更新时间:2024-11-10
· 948 次阅读

类实例化顺序一 概述 阿里巴巴一道笔试题二 类加载及初始化详解2.1 源码到字节码2.1.1 类结构简介2.1.2 字节码反汇编工具2.2 类加载机制2.2.1 加载2.2.2 链接2.2.3 初始化2.3 类初始化过程【重点】2.3.1 方法详解2.3.2 静态变量和静态代码块初始化顺序2.3.3 继承中类初始化分析三 对象创建和初始化过程3.1 new对象底层字节码指令分析3.2 对象初始化过程详解【重点】3.2.2 实例变量初始化顺序分析3.2.3 继承中实例变量初始化顺序四 类实例化顺序总结4.1 类初始化阶段4.2 对象的创建和初始化阶段4.3 类初始化和对象初始化顺序探究五 经典笔试案例5.1 阿里经典笔试讲解 一 概述 阿里巴巴一道笔试题

面试时,经常会遇到看代码写运算结果的题目,里面涉及静态变量,静态代码块,静态方法,实例变量,实例代码块,构造方法等的代码,如下:

请说程序执行运算结果。

public class Programer { public static int salary = getSalary(); //静态变量 private int workAge = getWorkAge();//实例变量 static {//静态代码块 System.out.println(1); } private static int getSalary() { //静态方法 System.out.println(2); return 20000; } public Programer() { //构造方法 System.out.println(3); } {//实例代码块 System.out.println(4); } private int getWorkAge() { //非静态方法 System.out.println(5); return 10; } public static void main(String[] args) {//主方法 new Programer(); new Programer(); System.out.println(6); } }

参考答案:

2 1 5 4 3 5 4 3 6

相信大部分同学根据自身的经验,是能轻松解题的。但在实际的面试中题目可能变幻莫测,如果对类的实例化顺序不太熟悉,解决起来估计还是有一定难度的。

因此今天就对类实例化做一个专题讲解,我们从写的java源代码到字节码,再从字节码执行流程反推到java源代码来讲解相关代码的执行流程。

二 类加载及初始化详解 2.1 源码到字节码 2.1.1 类结构简介 javac Student.java--->Student.class

在这里插入图片描述

使用工具javac编译的过程中,其实会经历非常复杂的过程,我们不用去深入研究。我们只要关心编译之后的class字节码文件。

这个class字节码文件中含有哪些数据呢,如何查看呢?我们可以从官方的文档中找到答案。

首先,class文件是二进制文件,直接使用文本工具读取是看不到信息的。我们可以使用专门的软件来查看class文件中的字节信息。例如:winhex, sublime

查看Student.class字节码信息如下:
原创文章 12获赞 2访问量 264 关注 私信 展开阅读全文
作者:Ybb_studyRecord



实例化 阿里

需要 登录 后方可回复, 如果你还没有账号请 注册新账号