Java:构造器,构造代码块,静态代码块的执行顺序

1.构造器:与类同名且没有返回值,用来初始化类属性;

  构造器又分为无参构造器和有参构造器

  1.1:无参构造器

    public class Contruction{

      ...属性...

    public Contruction(){}//无参构造器,不写,系统会自动添加

    }

  1.2:有参构造器

    public class Contruction {

      private int i;

     public Contruction( int i){/*有参构造器,如果你定义了一个有参数的构造器,那么你在实例化对象的时候必须带有参数,不然会报错,

因为你创建了一个有参数 ,那么你就很清楚的知道自己在干什么,系统不会自动添加无参构造器*/

        this.i = i;

      }

    }

---------------------------------------------------------------------------------------------------------------------------------------------------------

2.构造代码块:对象一实例化就执行,每实例化一次执行一次;

构造代码块的格式为:

结果:

从结果可以看出:构造代码块比构造器优先执行。

----------------------------------------------------------------------------------------------------------------------------------------------------------

3.静态代码块:对象实例化就执行,无论new 多少个对象,仅执行一次;

结果:

从结果中可以看出,静态代码块仅执行了一次,且优先于构造器执行。

----------------------------------------------------------------------------------------------------------------------------------------------------------

时间: 2024-08-07 17:02:42

Java:构造器,构造代码块,静态代码块的执行顺序的相关文章

面试趣闻之java 代码块 静态代码块 构造方法 执行顺序

初级程序员总会遇到这样的问题,代码块 静态代码块 构造方法 执行顺序 父类 public class ClassSup { public ClassSup(){ System.out.println("父类构造器"); } static { System.out.println("父类静态代码块"); } { System.out.println("父类代码块"); } public void mathod01(){ System.out.pri

【Java总结】static,静态代码块

static static可以修饰属性,方法,代码块,内部类 特点 随着类的加载而加载 优先于对象存在 修饰的成员被所有对象所共享 访问权限允许时,可以不创建对象,直接被类调用 static修饰的属性,存储在内存中的静态区域,整个程序中只有这一个成员 public class Test { public static void main(String[] args) { Person p = new Person(); Person.setName("ttf");//类可以直接访问静态

java代码块,静态代码块,静态变量,构造方法执行顺序

一个类中执行顺序: 静态变量静态代码块代码块构造方法 子类和父类执行顺序: 父类静态变量父类静态代码块子类静态变量子类静态代码块父类代码块父类构造方法子类代码块子类构造方法 直接看代码,一目了然. public class Test { public static void main(String[] args) { new A(); /* 结果: * A静态变量 A静态代码块 A代码块 A构造方法 * */ new B(); /* * 结果: * A静态变量 A静态代码块 B静态变量 B静态代

Java--普通代码块静态代码块执行顺序

1 class B { 2 3 public B() { 4 super(); 5 System.out.println("构造器B"); 6 } 7 { 8 System.out.println("普通的代码块B"); 9 } 10 static{ 11 System.out.println("静态代码块B"); 12 } 13 14 } 15 public class ClassA extends B { 16 17 public Class

2.24 Java基础总结 ①访问权限②static③静态方法④实例初始化块⑤静态初始化块

①访问权限②static③静态方法④实例初始化块⑤静态初始化块一.访问权限 默认是同包protected是有关系的,即同包和不同包的子类private只有本类,public全部   本类   同包 不同包       子类 非子类 子类 非子类 private √         默认(同包) √ √ √     protected √ √ √ √   public √ √ √ √ √ 二.static静态成员变量,类级别,全类共享一个Person.country = "中国":一般用

Java 代码块,普通代码块,构造代码块,静态代码块

学习Java中… 刚刚学到了Java的代码块,虽然很简单 还是记下吧! 左音 2016-03-16 ----------------- // 执行优先级:静态代码块 > mian方法 > 构造代码块 > 构造方法 // 静态代码块不论是否实例化都会执行一次,不会重复执行 // 构造代码块实例化时执行 1.普通代码块 // 普通代码块在方法或语句中 1 public class CodeBlock { 2 3 public static void main (String[] args)

【code block】局部代码块+构造代码块+静态代码块

1.局部代码块 位置:位于类的方法中 表示方法:{} 作用:控制变量的生命周期,减少内存消耗 demo: public class LocalCode { public static void main(String [] args){ int y = 10; { int x = 20; System.out.println(x); } System.out.println(y);//运行到此时x变量已被垃圾收集 } } 2.构造代码块 位置:位于类中 表示方法:{} 作用:用于给每个对象进行初

java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数

一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构 Cat继承Animal Runner里包含main函数,程序入口 Sing类主要用来打印执行顺序的序列号 二.代码 public class Animal { Sing s1=new Sing(1,"animal\tnot static field"); static Sing s2=new Sing(2,&q

java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print("2"); } } class B extends A{ static { System.out.print("a"); } public B() { System.out.print("b"); } } public class Hello { pu

java普通代码块、静态代码块、默认构造方法的执行顺序

1 package test; 2 3 class Parent{ 4 { 5 System.out.println("父类普通代码块"); 6 } 7 static{ 8 System.out.println("父类静态代码块"); 9 } 10 public Parent(){ 11 System.out.println("父类默认构造代码方法"); 12 } 13 } 14 class Child extends Parent{ 15 {