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

 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();          //调用方法
15         System.out.println(obj.field);
16
17         obj=new Test2(300);   //调用构造方法
18         System.out.println(obj.field);
19     }
20
21 }

以上代码运行结果为: 100 300

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

以上结果为 200 300

结论: 类的初始化块与字段的初始值优先级为同级,要比较两个方法的优先级,看哪一个在后边,后边的一个起作用。(类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行)

类的构造方法优先级要高于以上两种方法。

原文地址:https://www.cnblogs.com/cxy0210/p/11684802.html

时间: 2024-11-03 21:28:27

类的初始化块,构造方法与字段的初始值的相关文章

java类的初始化块/执行顺序,实例化对象数据赋值

java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 非静态初始化块 非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值. 构造方法 在每次初始化实例对象时调用. 重点:执行顺序-> 在加载类时执行一次静态初始化块(之后不再调用). 在每次初始化实例对象时:先执行非静态初始化块,再执行构

【宋红康学习日记15】类的初始化块

一  非Static代码块 { ............................. } 1 可对类的属性初始化: 2 可以有输出语句: 3 一个类中可有多个非静态代码块,顺序执行: 4 每创建一个类的对象,非静态代码块加载一次: 5 非静态代码的执行早于构造器. 二  Static代码块 static { ............................. } 1 可对类的属性初始化: 2 可以有输出语句: 3 一个类中可有多个静态代码块,顺序执行: 4 静态类早于非静态类代码块

初始化块与构造方法

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

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

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

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

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

Java类 初始化块

java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 非静态初始化块 非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值. 构造方法 在每次初始化实例对象时调用. 重点:执行顺序-> 在加载类时执行一次静态初始化块(之后不再调用). 在每次初始化实例对象时:先执行非静态初始化块,再执行构

Java 中的 static 使用之静态初始化块

Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 而普通初始化块只要有创建一个实例(即new一次),就执行一次. 我们来看一段代码: 运行结果: 通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行

疯狂Java讲义(十一)---- 初始化块

普通初始化块 一个类里可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的先执行,后面定义的后执行. 初始化块的修饰符只能是static,使用static修饰的初始化块被称为静态初始化块. 普通初始化块.声明实例属性指定的默认值都可认为是对象的初始化代码,执行顺序与声明顺序相同. 当Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始化,初始化顺序为:先执行初始化块或声明属性时制定的初始值,再执行构造器里指定的初始值

类的初始化顺序注意问题

1.未继承的情况: (静态变量先有值) 静态初始化块 实例初始化块 构造方法 小结: 1.静态成员变量,静态代码块(与顺序有关) 2.实例成员变量,代码块(有顺序有关) 3.构造方法 2.继承的情况: 1.父类静态变量,父类静态初始化块 2.子类静态变量,子类静态初始化块 3.父类变量,父类初始化块,父类构造方法 4.子类变量,子类初始化块,子类构造方法