Java类的加载和对象创建流程的详细分析
相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一。接下来通过实例详细的分析一下:
package com.test;
public class Parent {
int a = 10;
static int b =11;
//静态代码块
static {
System.out.println("parent静态代码块:b=" + b);
b++;
}
//代码块
{
System.out.println("Parent代码块:a=" + a);
System.out.println("Parent代码块:b=" + b);
b++;
a++;
}
//无参构造函数
Parent(){
System.out.println("Parent无参构造函数:a=" + a);
System.out.println("Parent无参构造函数:b=" + b);
}
//有参构造函数
Parent(int a){
System.out.println("Parent有参构造函数:a=" + a);
System.out.println("Parent有参构造函数:b=" + b);
}
//方法
void function(){
System.out.println("Parent function run ......");
}
}
package com.test;
public class Child extends Parent {
int x = 10;
static int y = 11;
//静态代码块
static {
System.out.println("Child静态代码块:y=" + y);
y++;
}
//代码块
{
System.out.println("Child代码块:x=" + x);
System.out.println("Child代码块:y=" + y);
y++;
x++;
}
//构造函数
Child(){
System.out.println("Child无参构造函数:x" + x);
System.out.println("Child无参构造函数:y=" + y);
}
//方法
void function(){
System.out.println("Child function run ......");
}
}
package com.test;
public class testPC {
public static void main(String[] args) {
Child demo = new Child();
demo.function();
System.out.println("............................................................");
/* Child child = new Child();
child.function();*/
}
}
结果:
parent静态代码块:b=11
Child静态代码块:y=11
Parent代码块:a=10
Parent代码块:b=12
Parent无参构造函数:a=11
Parent无参构造函数:b=13
Child代码块:x=10
Child代码块:y=12
Child无参构造函数:x11
Child无参构造函数:y=13
Child function run ......
............................................................
Parent代码块:a=10
Parent代码块:b=13
Parent无参构造函数:a=11
Parent无参构造函数:b=14
Child代码块:x=10
Child代码块:y=13
Child无参构造函数:x11
Child无参构造函数:y=14
Child function run ......
Java类的加载和对象创建流程的详细分析的更多相关文章
- 【Java基础】Java类的加载和对象创建流程的详细分析
相信我们在面试Java的时候总会有一些公司要做笔试题目的,而Java类的加载和对象创建流程的知识点也是常见的题目之一.接下来通过实例详细的分析一下. 实例问题 实例代码 Parent类 package ...
- Java类的加载的一个小问题
前言 之前写了一篇文章专门介绍了一下类的加载和对象的创建流程,然后收到了一个博友的疑问,觉得蛮好的,在这里和大家分享下. 博文地址:[Java基础]Java类的加载和对象创建流程的分析 疑问 类在加载 ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- Java类的加载、链接和初始化
一.Java的类加载机制回顾与总结: 我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的就是把Java字节代码转换成JVM中的java.lang.Class类的对象.这样 ...
- java 类的加载,链接,初始化
本篇的话题,讨论Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码 ...
- JAVA类的加载、连接与初始化
JAVA类的加载.连接与初始化 类的声明周期总共分为5个步骤1.加载2.连接3.初始化4.使用5.卸载 当java程序需要某个类的时候,java虚拟机会确保这个类已经被加载.连接和初始化,而连接这个类 ...
- Java类的加载 链接 初始化
原文地址 Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码到能够 ...
- 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】
目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...
- java类从加载、连接到初始化过程
类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文件中,JV ...
随机推荐
- NI Vision ClampRake修改
也可以直接在C盘模板中直接修改,模板路径: C:\Program Files (x86)\National Instruments\Vision Assistant\CG\Visual ...
- RoR - Nested Resources, Security ,pagination
root to: 'xxx' 默认root路径 Nested Resource: Rails.application.routes.draw do resources :books do resou ...
- python celery多worker、多队列、定时任务
python celery多worker.多队列.定时任务
- Visual Studio 独立 Shell 下载
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/isolated-shell/ SSMS 2017 安装问题 https:/ ...
- 理解JS深拷贝
前言: JS的拷贝(copy),之所以分为深浅两种形式,是因为JS变量的类型存在premitive(字面量)与reference(引用)两种区别.当然,大多数编程语言都存在这种特性. 众所周知,内存包 ...
- python运算符和数据类型的可变性
一.运算符 计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算. 种类:算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算,今天我们先了解前四个. 算术运 ...
- STM32F103单片机解密资料
STM32F103单片机解密资料下载 一.STM32 32位ARM Cortex MCU 基于ARM® Cortex® M 处理器内核的 32位闪存微控制器STM32产品家族,为MCU用户开辟了一个全 ...
- oracle - 查询某些表是空白,需要提升权限后,才可查询出数据
begin fnd_global.apps_initialize(user_id => 1150 ,resp_id => 50738 ,resp_appl_id => 660 ); ...
- java-redis
pom.xml添加如下配置: <dependency> <groupId>org.springframework.boot</groupId> <artifa ...
- Python练习:小程序,列车出票程序
# 需求:列车某结车厢座位有15行,5列,初始状态均为'有票',当乘客选了座次,下单后,变更为'已售' # 下单时,要显示所有座位的状态(有票or已售) # 下单完毕后,显示下单后的座位状态. lin ...