java类的加载顺序和实例化顺序(Demo程序)
一、main函数中实例化对象
父类
package com.learn;
public class Father {
//静态变量
public static int num_1 = 1;
//静态代码块
static {
//判断静态变量和静态代码块的执行顺序
System.out.println("Father类的静态变量" + num_1);
System.out.println("Father类的静态代码块");
}
//普通变量
public int num_2 = 2;
//匿名代码块
{
System.out.println("Father类的普通变量=" + num_2);
System.out.println("Father类的匿名代码块");
}
//构造函数
public Father() {
System.out.println("Father类的构造函数");
}
}
子类
package com.learn;
public class Son extends Father{
//静态变量
public static int num_3 = 3;
//静态代码块
static {
//判断静态变量和静态代码块的执行顺序
System.out.println("Son类的静态变量" + num_3);
System.out.println("Son类的静态代码块");
}
//普通变量
public int num_4 = 4;
//匿名代码块
{
System.out.println("Son类的普通变量=" + num_4);
System.out.println("Son类的匿名代码块");
}
//构造函数
public Son() {
System.out.println("Son类的构造函数");
}
//主函数
public static void main(String[] args) {
Son Son = new Son();
}
}
运行结果
Father类的静态变量1
Father类的静态代码块
Son类的静态变量3
Son类的静态代码块
Father类的普通变量=2
Father类的匿名代码块
Father类的构造函数
Son类的普通变量=4
Son类的匿名代码块
Son类的构造函数
二、main函数中不实例化对象
//主函数
public static void main(String[] args) {
//Son Son = new Son();
}
运行结果
Father类的静态变量1
Father类的静态代码块
Son类的静态变量3
Son类的静态代码块
三、结论
类在加载时:父类静态变量>父类静态代码块>子类静态变量>大于子类静态代码块
类在实例化时:父类非静态变量>父类匿名代码块>父类构造函数>子类非静态变量>子类非静态代码块>子类构造函数
java类的加载顺序和实例化顺序(Demo程序)的更多相关文章
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- 【Java基础】Java类的加载和对象创建流程的详细分析
相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下. 实例问题 实例代码 Parent类 package ...
- Java类的加载的一个小问题
前言 之前写了一篇文章专门介绍了一下类的加载和对象的创建流程,然后收到了一个博友的疑问,觉得蛮好的,在这里和大家分享下. 博文地址:[Java基础]Java类的加载和对象创建流程的分析 疑问 类在加载 ...
- JAVA类的加载、连接与初始化
JAVA类的加载.连接与初始化 类的声明周期总共分为5个步骤1.加载2.连接3.初始化4.使用5.卸载 当java程序需要某个类的时候,java虚拟机会确保这个类已经被加载.连接和初始化,而连接这个类 ...
- 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】
目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...
- java类从加载、连接到初始化过程
类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文件中,JV ...
- JVM(1):Java 类的加载机制
原文出处: 纯洁的微笑 java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang. ...
- Java类的加载、链接和初始化
一.Java的类加载机制回顾与总结: 我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的就是把Java字节代码转换成JVM中的java.lang.Class类的对象.这样 ...
- java 类的加载,链接,初始化
本篇的话题,讨论Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码 ...
- Java类的加载 链接 初始化
原文地址 Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码到能够 ...
随机推荐
- Arthas 使用(二) —— 应用场景
1. ognl获取bean SpringContextUtil,通常代码中会有类似这样的工具类用来获取 bean 实例 @Component public class SpringContextUti ...
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...
- React:Element
React Elements 是构成React App的最小单位.React中的组件是由一个或多个Elements构成的. 和DOM不同,React Elements 是纯粹的JS对象.利用React ...
- 3.5 Go布尔型
1.Go布尔型 一个布尔类型的值只有两种:true 和 false. if 和 for 语句的条件部分都是布尔类型的值,并且==和<等比较操作也会产生布尔型的值. package main im ...
- Objective-C中的加号与减号
在Objective-C中,方法分为类方法和实例方法. 前置加号(+)的方法为类方法,这类方法是可以直接用类名来调用的,它的作用主要是创建一个实例.有人把它称为创建实例的工厂方法. 前置减号(-)的方 ...
- 根据ip查询ip归属地
http://www.oschina.net/code/snippet_944819_33978 http://www.jb51.net/article/54287.htm public String ...
- UVA11038
题目大意:见刘汝佳<算法竞赛入门经典——训练指南>P173 解题思路: 求出 0 到 m-1 这些数字中 0 出现的次数(此处要特判 m = 0 的情况),再求出 0 到 n 这些数字中 ...
- Pyqt5_实例1
#coding=utf-8 ''' Created on 2018年11月2日 @author: yanerfree ''' import sys from PyQt5.QtWidgets impor ...
- [Objective-C] 006_Protocol(协议)
学过java的同学都知道Interface(接口),那么在Objective-C中有没有接口呢?其实 Objective-C中用Protocol(协议)来实现的,在Objective-C具体怎么用,我 ...
- Python连接不上SQL Server的两种根治思路
连接不上数据库,首先可以排除是代码的问题,连接方式都是千篇一律的. 大多数问题都是本机的两个原因造成的,1.服务没有开启,2.没有启动SQL配置的TCP/IP 下面给出统一解决方案: 首先从开始菜单找 ...