Java 普通代码块静态代码块执行顺序(实例讲解)

如下所示:

class B {

 public B() {
  super();
  System.out.println("构造器B");
 }
 {
  System.out.println("普通的代码块B");
 }
 static{
  System.out.println("静态代码块B");
 }

}
public class ClassA extends B {

 public ClassA() {
  super();
  System.out.println("构造器A");
 }
 {
  System.out.println("普通的代码块A");
 }
 static{
  System.out.println("静态代码块A");
 }
 public static void main(String[] args) {
  ClassA a=new ClassA();
 }
}

运行结果如下:

静态代码块B
静态代码块A
普通的代码块B
构造器B
普通的代码块A
构造器A

可以看到静态代码块被优先执行,然后是父类的普通代码块,父类构造器,然后才是子类的普通代码块,子类构造器

以上这篇Java 普通代码块静态代码块执行顺序(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java中的static静态代码块的使用详解

    一.与静态方法的比较 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口.两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 二.静态方法注意事项 使用类的静态方法时,注意: a.在静态方法里只能直接调用同类中其他的静态成员(包括变量

  • 深入浅析Java中普通代码块、构造代码块与静态代码块

    //执行顺序:(优先级从高到低.) 静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1.普通代码块 public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现"{普通代码的执行语句}"的就称为普通代码块. *普通代码块执行顺序由他们在代码中出现的次序决定--"先出现先执行" * */ { System.out.p

  • 关于Java中静态代码块的执行浅析

    前言 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的:需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的, 静态方法在类加载的时候就已经加载,可以用类名直接调用. 比如main方法就必须是静态的,这是程序入口 两者的区别就是: 静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 问题及总结 关于静态代码块其实是面试时老生常谈的问题,虽然面试时问了我也大概知道,但是在用的时候还

  • Java 中普通代码块,构造代码块,静态代码块区别及代码示例

    Java中普通代码块,构造代码块,静态代码块区别及代码示例 //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 //普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--"先出现先执行" public class CodeBlock01{ public static void main(Strin

  • java 代码块与静态代码块加载顺序

    java 代码块与静态代码块加载顺序 public abstract class ClassLoadingTest { public static void main(String[] args) { User user3 = new User(); } } public class User { public static User user= new User("wang",18); public static void userSay(){ System.out.println(

  • java中的静态代码块、构造代码块、构造方法详解

    运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System.out.println("I'm B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } } cla

  • Java 普通代码块静态代码块执行顺序(实例讲解)

    如下所示: class B { public B() { super(); System.out.println("构造器B"); } { System.out.println("普通的代码块B"); } static{ System.out.println("静态代码块B"); } } public class ClassA extends B { public ClassA() { super(); System.out.println(&q

  • Kotlin构造函数与成员变量和init代码块执行顺序详细讲解

    目录 在Kotlin中经常看到主构造函数.成员变量.init代码块(也叫初始化器),它们的执行时机和顺序是什么样的呢?看一下官方的示例: class InitOrderDemo(name: String) { val firstProperty = "First property: $name".also(::println) init { println("First initializer block that prints ${name}") } val se

  • java多线程学习之死锁的模拟和避免(实例讲解)

    1.死锁 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. Java 死锁产生的四个必要条件: 1.互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2.不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放. 3.请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有. 4.循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的

  • 【Java IO流】字节流和字符流的实例讲解

    字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作--也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3.从流的内容来讲,有字节和字符之分. 这篇文章先后讲解IO流中的字节流和字符流的输入和输出操作. 一.字节流 1)输入和输出流 首先,字节流要进行读和写,也就是输入和输出,所以它有两个抽象的父类InputStream.OutputStream. InputStream抽象了应用程序读取数据的方式,即

  • Spring bean 加载执行顺序实例解析

    本文研究的主要是Spring bean 加载执行顺序的相关内容,具体如下. 问题来源: 有一个bean为A,一个bean为B.想要A在容器实例化的时候的一个属性name赋值为B的一个方法funB的返回值. 如果只是在A里单纯的写着: private B b; private String name = b.funb(); 会报错说nullpointException,因为这个时候b还没被set进来,所以为null. 解决办法为如下代码,同时学习下spring中 InitializingBean

  • java接入创蓝253短信验证码的实例讲解

    说明 项目是springboot框架 1.短信配置文件 包含验证码发送路径.用户名.密码 chuanglan.requesturl= chuanglan.account= chuanglan.pswd= 配置文件 具体值 查看官网 位置查看截图 红框已经标红 2.读取配置文件类 3.发送数据request实体类 public class SmsVariableRequest { private String account; private String password; private St

  • django定期执行任务(实例讲解)

    要在django项目中定期执行任务,比如每天一定的时间点抓取数据,刷新数据库等,可以参考stackoverflow的方法,先编写一个manage.py命令,然后使用crontab来定时执行这个命令. 定制manage.py命令 app可以使用manage.py注册自己的命令,比如要在polls这个app中定制一个closepoll命令,要先向polls文件夹中添加一个management/commands的目录: polls/ __init__.py models.py management/

  • PHP使用Redis队列执行定时任务实例讲解

    Redis类: <?php namespace Utils; use Phalcon\Config\Adapter\Ini as ConfigIni; class Redis{ private static $redis1; private static $session; /** * 获取一个单例的redis对象 * @param string $name * @return \Redis */ public static function getObj($name='redis1') { t

  • java中静态代码块与构造方法的执行顺序判断

    前言 静态代码优先于非静态的代码,是因为被static修饰的成员都是类成员,会随着JVM加载类的时候加载而执行,而没有被static修饰的成员也被称为实例成员,需要创建对象才会随之加载到堆内存.所以静态的会优先非静态的. 执行构造器(构造方法)的时候,在执行方法体之前存在隐式三步: 1,super语句,可能出现以下三种情况: 1)构造方法体的第一行是this语句,则不会执行隐式三步, 2)构造方法体的第一行是super语句,则调用相应的父类的构造方法, 3)构造方法体的第一行既不是this语句也

随机推荐