/**
* 加载方法不等于执行方法,初始化变量则会赋值
* 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块
* 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数
*
*/
public class StaticTest {
/**第一个加载*/
public static int k = 0;
/**第二个加载,因为是new一个实例,
* 首先初始化j 打印出 1:j i=0 n=0
* 执行构造块 打印出 2:构造快 i=1 n=1
* 执行构造方法 打印出 3:t1 i=2 n=2
* 实例化完成
*/
public static StaticTest t1 = new StaticTest("t1");
/**第三个加载 过程同上
* 首先初始化j 打印出 4:j i=3 n=3
* 执行构造块 打印出 5:构造快 i=4 n=4
* 执行构造方法 打印出 6:t2 i=5 n=5
*/
public static StaticTest t2 = new StaticTest("t2");
/**第四个加载
* 打印出 7:i i=6 n=6
*/
public static int i = print("i");
/**
* 第五个加载
*/
public static int n = 99;
/**
* 此变量在类加载的时候并不初始化,在实例化类的时候初始化
*/
public int j = print("j"); {
print("构造快");
}
/**
* 第六个加载 此时,n已经被初始化 所以打印出
* 8:静态块 i=7 n=99
*/
static{
print("静态块");
}
//-----------以上属于类加载---------------------
/**
* 实例化过程:
* 首先加载非静态方法集;
* 初始化非静态变量:9:j i=8 n=100
* 执行构造块:10:构造快 i=9 n=101
* 执行构造方法:11:init i=10 n=102
* 实例化完成
*/ /**
* 执行构造函数 实例化完成
* @param str
*/
public StaticTest(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++n;
++i;
}
/**
* 这个应该是最先加载 但是,加载不等于执行
* 因为如果不加载此函数,静态变量是无法初始化的
* @param str
* @return
*/
public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
return ++n;
} public static void main(String[] args) {
/**首先加载类,然后实例化:
* 类加载过程:
* 首先加载所有的静态方法,但不执行;
* 然后按照静态变量的顺序开始初始化
* 静态变量初始化完毕后执行静态构造块(不执行构造块)
* 此时类加载完毕
* 实例化过程:
* 加载非静态方法
* 初始化非静态变量
* 执行构造代码块
* 执行构造函数
* 此时实例化完毕
*/
StaticTest t = new StaticTest("init");
} }

java 类加载机制 阿里面试题的更多相关文章

  1. Java 类加载机制(阿里面试题)-何时初始化类

    (1)阿里的面试官问我,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进 ...

  2. 两道面试题,带你解析Java类加载机制

    文章首发于[博客园-陈树义],点击跳转到原文<两道面试题,带你解析Java类加载机制> 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Gr ...

  3. 【转】两道面试题,带你解析Java类加载机制(类初始化方法 和 对象初始化方法)

    本文转自 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html 关键语句 我们只知道有一个构造方法,但实际上Ja ...

  4. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  5. 带你解析Java类加载机制

      目录 Java类加载机制的七个阶段 加载 验证 准备(重点) 解析 初始化(重点) 使用 卸载 实战分析 方法论 树义有话说 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如 ...

  6. Java类加载机制()

    Java类加载机制(转载) 概述 在开始正文之前,我们先看两张图 .Java平台的理解?Java最显著的特性?Java是解释执行? 先看一下java程序的执行流程图 再看一下jvm的大致物理结构图 本 ...

  7. 大牛带你学会java类加载机制,不要错过,值得收藏!

    很多人对java类加载机制都是非常抗拒的,因为这个太难理解了,但是我们作为一名优秀的java工程师,还是要把java类加载机制研究和学习明白的,因为这对于我们在以后的工作中有很大的帮助,因为它在jav ...

  8. Java 类加载机制

    类的加载: 类的初始化: 类什么时候才被初始化:1)创建类的实例,也就是new一个对象2)访问某个类或接口的静态变量,或者对该静态变量赋值3)调用类的静态方法4)反射(Class.forName(&q ...

  9. Java类加载机制深度分析

    转自:http://my.oschina.net/xianggao/blog/70826 参考:http://www.ibm.com/developerworks/cn/java/j-lo-class ...

随机推荐

  1. PHP整洁之道

    摘录自 Robert C. Martin的Clean Code 书中的软件工程师的原则 ,适用于PHP. 这不是风格指南. 这是一个关于开发可读.可复用并且可重构的PHP软件指南. 并不是这里所有的原 ...

  2. centos7之zabbix3.2的fping监控

    zabbix通过fping检测主机网络状态 fping的官方网站:http://www.fping.org/ 官网指定的github的地址:https://github.com/schweikert/ ...

  3. P1836 【数页码_NOI导刊2011提高(04)】

    P1836 数页码_NOI导刊2011提高(04) 题目描述 一本书的页码是从1—n编号的连续整数:1,2,3,…,n.请你求出全部页码中所有单个数字的和,例如第123页,它的和就是1+2+3=6. ...

  4. c语言提高第二天

    一.指针强化1.指针也是一种数据类型,指针变量也是一种变量,和int a本质是一样的 1)指针变量也是一种变量,也有空间,32位程序大小为4个字节 int *p = 0x1122; 2)*操作符,*相 ...

  5. [SimplePlayer] 5. 向音频设备输出音频

    两种SDL音频输出方式 我们这里采用SDL来进行音频输出.SDL提供两种音频输出的方式: 如果在SDL_OpenAudio时不指定callback,那么可以调用SDL_QueueAudio主动地向音频 ...

  6. opencv 边缘检测原理

    只是实现一下,暂不考虑效率 import cv2 as cv import numpy as np import math # 从源码层面实现边缘检测 img = cv.imread('../imag ...

  7. Linux内核参数

    vm.overcommit_memory 0 - 表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并把错误返回给应用进程. 1 - 表示内核允 ...

  8. 中国剩余定理 CRT

    中国剩余定理 CRT 正常版本CRT 要解的是一个很容易的东西 \[ \begin{aligned} x\equiv a_1(mod\ m_1)\\ x\equiv a_2(mod\ m_2)\\ . ...

  9. [curl]convert curl to python Ruby

    https://curl.trillworks.com/

  10. [BJOI2019] 光线

    看起来很麻烦,做起来并不难的题 以下设:$a_i=\frac{a_i}{100},b_i=\frac{b_i}{100}$ 显然,如果$b_i=0$的话,直接求$\Pi a_i$就是答案. 解决反射问 ...