static静态块 构造方法 普通语句块 在java中的执行顺序

 1 public class Par {
 2
 3     public Par() {
 4         System.out.println("父类--constructor");
 5     }
 6
 7     static {
 8         System.out.println("父类--statc");
 9     }
10
11     {
12         System.out.println("父类普通代码块");
13     }
14 }
15
16 public class Sub extends Par {
17
18     public Sub() {
19         super();
20         System.out.println("子类--constructor");
21     }
22
23     static {
24         System.out.println("子类--static");
25     }
26
27     {
28         System.out.println("子类--普通代码");
29     }
30
31     public static void main(String[] args) {
32         Sub sub = new Sub();
33     }
34 }

执行顺序:

父类----static

子类---static

父类普通代码块

父类----constructor

子类---普通代码块

子类------constructo

原文地址:https://www.cnblogs.com/wylwyl/p/10438023.html

时间: 2024-07-29 13:24:28

static静态块 构造方法 普通语句块 在java中的执行顺序的相关文章

java中代码执行顺序

之前面试的时候有一道题,是考java的代码执行顺序的. 在大三的时候学习java语言的时候有说,但是在实际工作中用的比较少,所以在这里重新记录复习一下. 比如下面这段代码: class helloA{ public helloA(){ System.out.println("helloA"); } { System.out.println("I'm A"); } static { System.out.println("Static A"); }

域初始化、静态块及构造方法等在创建类实例时的执行顺序(转载)

在<Core java 2: volumn 1, Edition 5>一书的第四章“对象与类”中讲到域赋值语句.实例块.静态块及构造方法等在创建类实例时的执行顺序,中文译本有些处翻译的不贴切,而英文原书中也有一处错误.本文通过一个小程序来说明类实例构造过程中的语句执行顺序. 程序如下: public class Teststaticblock { public Teststaticblock() { this("second"); System.out.println(&q

final、static、代码块、静态代码块、内部类、代码执行顺序

final final域使得确保初始化安全性(initialization safety)成为可能,初始化安全性让不可变形对象不需要同步就能自由地被访问和共享 作用在类上               则为final类,final类不能被继承.一般用于工具类时,同时把工具类构造函数声明为私有,暴露静态共有方法 作用在成员变量上    则视为常量.此时赋值方式有三种:(1)声明时赋值(2)构造函数中赋值(3)代码块中赋值. 即不管哪种方式都要保证在使用该变量之前要确保已经有值.使用该特性,可以强制赋

Java中的初始化顺序(静态成员、静态初始化块,普通成员、普通初始化块、构造函数)

本文链接    http://blog.csdn.net/xiaodongrush/article/details/29170099 参考文章     http://my.oschina.net/leoson/blog/103251 1. 一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 2. 两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量

有return语句情况下,try-catch-finally的执行顺序

重要结论: 1.不管有没有出现异常,finally块中代码都会执行 2.当try和catch中有return时,finally仍然会执行 3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),即:函数返回值是在finally执行前确定的 4.finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值 举例分析: Ca

static变量生命周期 在php和java中的不同

<%! static class Count { private static int count = 0; public static int getCount(){ count++; return count; } } %> <% out.print(Count.getCount()); %> 通过浏览器连续访问,会分别输出:1,2,3,4,5,6,........ <?php class Count{ private static $count = 0; public

java初始化的执行顺序

Java初始化(initialization)其实包含两部分: 1.类的初始化(initialization class & interface)2.对象的创建(creation of new class instances).因为类的初始化其实是类加载(loading of classes)的最后一步,所以很多书中把它归结为“对象的创建”的第一步.其实只是看问题的角度不同而已.为了更清楚的理解,这里还是分开来. 顺序:应为类的加载肯定是第一步的,所以类的初始化在前.大体的初始化顺序是:类初始化

Java学习之继承中的执行顺序详解

代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前,首先执行构造代码块. C:静态代码块 static{}对类的数据进行初始化,仅仅只执行一次. (3)静态代码块,构造代码块,构造方法的顺序问题? 静态代码块 > 构造代码块 > 构造方法 class Student { static { System.out.println("Stud

Java代码的执行顺序

引言 对于Java的初学者而言,很多时候我们只知道如何写一些基础的代码,但是却不知道为什么,对于一些概念而言,更是停留在一个很模糊的概念上,其实这样是不好的一种学习习惯.所以对于不太清楚的一些概念,自己多敲一敲,或许能更好的掌握. [TOC] 问题 今天要说的问题是,Java中代码的执行顺序,不知道叫这个题目合适不.这里先定义几个类别: 构造方法(如:public className(){--}) 静态代码块(如:static {--}) 类的属性变量(如:ClassA a = new Clas