初始化块与构造方法

class InitializeBlockClass {
 {
    field=200;
 }
    public int field=100;
    public InitializeBlockClass (int value){
    this.field=value;
 }

public InitializeBlockClass(){

}
    public static void main(String[] args) {
    // TODO Auto-generated method stub
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);

obj=new InitializeBlockClass (300);
        System.out.println(obj.field);
 }

}

输出100 300

Java字段初始化的规律:Java进行初始化的地方有两个,初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块(以上程序为实例初始化块),执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。当有两个构造函数时依据参数个数进行引用。

时间: 2024-08-05 22:29:12

初始化块与构造方法的相关文章

初始化块、静态初始化块和构造方法

初始化块: 在类的声明中,可以包含多个初始化块,当创建类的实例时,会依次执行这些初始化块 静态初始化块: 用static修饰初始化块,称为静态初始化块: 构造方法: 它是一个与类同名且没有返回值类型的方法: 三者之间的不同: 初始化块和构造方法都是在创建类的实例时执行,静态初始化块只在类加载的时候执行,且只会执行一次,且只能初始化静态变量 优先级: 静态初始化块>初始化块>构造方法 1 package com.imooc.tes002; 2 3 public class HelloWorld

java中初始化块、静态初始化块和构造方法

(所谓的初始化方法init()是另一回事, 在构造方法之后执行, 注意不要混淆) 在Java中,有两种初始化块:静态初始化块和非静态初始化块.它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字. 非静态初始化块(构造代码块):作用:给对象进行初始化.对象一建立就运行,且优先于构造函数的运行.与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化.应用:将所有构造函数共性的东西定义在构造代码块中. 静态初始化块:作用:给类进行初始化

Java:初始化块、静态初始化块、构造方法的执行顺序

1. 静态初始化块 静态初始化块只在类首次加载时执行一次,同时静态初始化块只能给静态变量赋值,不能给普通成员变量赋值. 2. (非静态)初始化块 (非静态)初始化块在每次生成实例对象时都执行一次,可以给任意变量赋值. 3. 构造方法 构造方法在每次生成实例对象时都执行一次 4. 执行顺序:静态初始化块 --> 初始化块 --> 构造方法 测试代码如下: 1 public class Son extends Father { 2 static int sNum = 0; 3 int num =

类的初始化块,构造方法与字段的初始值

1 public class Test2 { 2 { //类的初始化块 3 field=200; 4 } 5 public int field=100; //字段的初始值 6 public Test2(int value) { //类的构造方法 7 this.field=value; 8 } 9 10 public Test2(){ 11 12 } 13 public static void main(String[] args) { 14 Test2 obj=new Test2(); //调用

Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

1.执行顺序 1.1.一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量.初始化块.构造器). 示例如下:(结果见注释) 1 class A { 2 public A() { 3 System.out.println("Constructor A."); 4 } 5

【Simple Java】什么是Java实例初始化块

在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的. 执行顺序 查看下面的代码,你知道哪个先执行吗? package simplejava; class Foo { // instance variable initializer String s = "abc"; // constructor public Foo() { System.out.println("constructor call

java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解

一.描述 java中类的静态代码块.构造代码块.构造方法.静态成员的初始化顺序: 首先,在类加载时,为类中的静态成员变量分配内存空间,并为其赋予默认值(整数型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用型为null): 其次,执行静态成员变量的显式初始化操作.静态成员的初始化方法有两种,其一为在声明的时候直接初始化,其二为使用静态代码块进行初始化, 这两种初始化方式会按照在类中的出现顺序来执行,而且只在类加载的时候执行一次. 再次,如果创建了类的对象,便会在堆中为类的

Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺

class B extends A ,然后A类也就是父类里面有静态代码块,普通代码块,静态方法,静态成员变量,普通成员变量,普通方法.子类也是这样,然后继承之后,关于程序打印输出的结果.涉及到Java类的各种成员的初始化顺序.经测试,得到如下结论: 1.父类[静态成员]和[静态代码块],按在代码中出现的顺序依次执行.2.子类[静态成员]和[静态代码块],按在代码中出现的顺序依次执行.3.父类的[普通成员变量被普通成员方法赋值]和[普通代码块],按在代码中出现的顺序依次执行.4.执行父类的构造方法

关于初始化块与构造函数的关系

public class A{ public static int nextID; public static int ID; public String name ; { ID = nextID; nextID++; } public a(){ this.name = ""; } public a(String name){ this.name = name; } } 当我们用构造方法构造对象的时候,比如员工,不管调用哪个构造方法,每new一个对象出来就会自动的给这个员工分配一个ID