package org.senssic;

/**

* 一般顺序:静态块——>静态变量——>成员变量——>构造方法——>静态方法(或非静态方法,需要调用)

* 1、静态代码块(只加载一次)2、构造方法(创建一个实例就加载一次)3、静态方法需要调用才会执行,所以最后结果没有e

*

* @author Administrator

*

*/

public class TestBean {

static int num = 1;// 静态变量第二个加载,只加载一次以后无论怎么new都不会加载

{

num += 2;

System.out.println("b");

}//静态变量后的大括号内代码new一次执行一次

int a = 3;

{// 成员变量第三个

System.out.println("c");

}

public TestBean() {// 类的构造函数,第四个加载

System.out.println("d");

}

static {// 静态块,第一个加载,仅加载一次,仅执行一次

System.out.println("a");

}

static void run()// 静态方法,调用的时候才加载,注意看,e没有加载

{

System.out.println("e");

}

public static void main(String[] args) {

new TestBean();

}

}

静态属性和静态块

静态变量只加载一次,以后不论你怎么new不会再加载

静态变量后大括号内有代码的话,new一次执行一次。

静态块加载的时候大括号内的语句就执行完毕,以后不会执行,且代码仅加载一次。

类初始化顺序

1、为静态属性分配内存并赋值(后面大括号语句不执行,这里是初始化,只是添加变量和值)或执行静态代码块(立刻执行大括号里面的语句)

2、为非静态属性分配内存并赋值

3、构造方法(实际上这个先于非静态属性调用到,只是构造方法里面的语句暂停执行,等到非静态属性加载完才执行)

4、执行非静态代码块 或 静态方法(都是调用了才加载)。

类中代码执行顺序

1、执行静态代码块(大括号包含的语句立刻执行,绝对是第一位的执行,没有能和它平级的)

2、静态属性 (第二位执行)

3、为非静态属性分配内存并赋值(大括号内语句第三位执行)

4、构造函数

5、执行非静态代码块 或 静态方法(都是调用了才加载)。

总结:静态块和属性都是优先类构造函数加载且仅加载一次,类方法无论静态还是非静态只有调用时候才会加载

eg:

package org.senssic;

public class TestBean {

public static TestBean tBean = new TestBean();

public TestBean() {

a();

System.out.println("构造函数");

}

public void a() {

System.out.println("我是普通方法");

}

}

package org.senssic;

public class testmain {

/**

* @param args

*/

public static void main(String[] args) {

System.out.println(TestBean.tBean);

}

}

输出:

我是普通方法 构造函数 org.senssic.TestBean@1f66cff

java代码加载_java类中代码加载顺序相关推荐

  1. java 类加载生命周期_Java类的加载与生命周期

    一.概要: 类的生命周期从类的 加载.连接.初始化 开始,到类的 卸载结束: 二.几个阶段: 加载:查找并加载类的二进制数据.(把类的.class文件的二进制数据读入内存,存放在运行时数据区的方法区: ...

  2. java中static的用法_Java类中static的用法

    关于Java中static的使用有以下四种情况: 1.静态成员变量        被static修饰的成员变量,叫静态成员变量或类变量:没有被static修饰的变量,叫实例变量. 两者的区别是: 静态 ...

  3. swagger中没有新加的实体类属性(新加的属性在swagger中不显示)问题

    昨晚在实体类中新加了三个之后就下班了,今天回来用swagger的时候发现swagger中对于这个实体类中的新增属性没显示,纳闷了,我寻思这也不能扒拉出锅了啊,回去看一下属性上的注解,如图 这也没错啊, ...

  4. html页面判断其他div为空,将外部html加载到div中 - 页面加载然后变为空白

    我确信这将会变成一件愚蠢的事情,但是自从我成为JavaScript noob以来,这里就变成了一件愚蠢的事情.将外部html加载到div中 - 页面加载然后变为空白 我想外部HTML内容加载到我的索引 ...

  5. java 普通类request_[Java教程]spring在普通类中获取session和request

    [Java教程]spring在普通类中获取session和request 0 2014-08-12 08:01:13 在使用spring时,经常需要在普通类中获取session,request等对像. ...

  6. java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...

    [单选题]在Word 2010的编辑状态,对当前文档中的文字进行"字数统计"操作,应当使用的菜单是( ) [单选题]客运员领带统一,领带夹夹在衬衣的( )钮扣之间. [单选题]文件 ...

  7. java类中的static块_java类中static代码块的执行次数

    java类中 static静态代码块的执行次数 1.在类加载的init阶段,类的类构造器中会收集所有的static块和字段并执行,static块只执行一次,由JVM保证其只执行一次. 2.直接看示例 ...

  8. java 类编译_Java类编译、加载、和执行机制

    Java类编译.加载.和执行机制 标签: java 类加载 类编译 类执行 机制 0.前言 个人认为,对于JVM的理解,主要是两大方面内容: Java类的编译.加载和执行. JVM的内存管理和垃圾回收 ...

  9. java的连接 初始化_java类从加载、连接到初始化过程详解

    Java代码在编译后会转化成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化成汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. 类加载 ...

最新文章

  1. python seek到指定行_python文件操作seek()偏移量,读取指正到指定位置操作
  2. PyQt4 进度条和日历 代码
  3. MUI+H5手机上传照片 支持多图片上传和拍照上传
  4. Servlet容器原型(三)——Tomcat 4默认连接器浅谈
  5. 项目中的常量是放在接口里还是放在类里呢?
  6. css ico图标不显示,网站后台ico图标不显示的解决方法
  7. PHP 每日学习函数之 floatval 函数
  8. 批量删除多个 PDF 文档空白页
  9. Mac电脑程序无响应怎么办?mac强制关闭软件的6种方法
  10. 网络的形成-从原始部落到现代化世界
  11. 基于Opencv的简单双摄像头图像实时拼接
  12. QQ提取,邮件群发,远程控制,http协议
  13. 如何用python 炒股赚钱_教程 | 如何用Python和机器学习炒股赚钱?
  14. 【PyTorch】3 AI诗人RNN实战(LSTM)——完成诗歌剩余部分、生成藏头诗
  15. 如何往数据库快速插入百万条数据
  16. 什么是TSN,如何搭建TSN验证环境?
  17. Flink sql填坑记1:Task did not exit gracefully within 180 + seconds
  18. win10系统服务器在哪里设置,服务器win10在哪里设置方法
  19. 服务器厂商visio图标网站,云服务器visio图标
  20. declare究竟是什么

热门文章

  1. 2005年3月9日笔记
  2. android java内存 c内存_Android NDK java和C\C++交互 | 学步园
  3. 努比亚Z40 Pro定档2月25日:业界唯一定制35mm主摄+首发索尼IMX787
  4. 苹果AR/VR头显将通过Memojis和SharePlay支持FaceTime
  5. 曝苹果iPhone 13将于8月开始大批量产,恶劣天气不会造成影响
  6. 苹果隐私追踪新规发布后 Android广告支出涨10%
  7. 虎牙李萌:网络视听内容的工业化生产正在提速
  8. 鸿蒙系统将登陆2亿台华为手机,“别的厂商想用,我们会支持!”
  9. 十大下班最晚城市,四个在广东
  10. 余承东:华为腕上穿戴设备市场份额已达全球第一