代码块(初始化块)

代码块(初始化块)的作用:对java对象进行初始化。

程序的执行顺序

  1、声明成员变量的默认值;

  2、显式初始化、多个初始化块依次被执行(同级别下按先后顺序执行);

  3、构造方法再对成员进行赋值操作;

一个类中的初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block),当类被载入时,类属性的声明和静态代码块按先后顺序执行,且只执行一次。

非静态代码块:

  可以有输出语句;

  可以对类的属性声明进行初始化操作;

  可以调用静态和非静态的变量或方法;

  若有多个非静态的代码块,那么按照从上到下的顺序一次执行;

  每次创建对象的时候,都会执行一次;

静态代码块:

  可以有输出语句;

  可以对类的属性声明进行初始化操作;

  不可以对非静态的属性初始化;

  静态代码块的执行要先于非静态代码块;

  静态代码块只执行一次;

在匿名内部类中,用代码块代替构造方法。

  

原文地址:https://www.cnblogs.com/fangfangfanga/p/12117100.html

时间: 2024-11-08 20:25:59

代码块(初始化块)的相关文章

Java面向对象--代码块(初始化块)和内部类

本篇博客介绍Java学习过程中类的成员之代码块(初始化块)和内部类的具体使用. 目录: ? 代码块(初始化块) ? 内部类(Inner class) ? 代码块(初始化块) 代码块的概述 ? 代码块(或初始化块)的作用:对Java类或对象进行初始化操作 ? 代码块(或初始化块)的分类:一个类中代码块只能被static修饰符修饰,若由static修饰称为静态代码块(static block),没有使用static修饰的,为非静态代码块 ? static 代码块化 通常用于初始化static cla

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)(转)

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: Java代码 p

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

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

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

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

Java类 初始化块

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

Java的初始化块及执行过程详解

问题:Java对象初始化方式主要有哪几种?分别是什么?针对上面的问题,想必大家脑海中首先浮现出的答案是构造器,没错,构造器是Java中常用的对象初始化方式. 还有一种与构造器作用非常相似的是初始化块,它可以对Java对象进行初始化操作.下面主要阐述Java的初始化块及执行过程. Java初始化块其实是Java类的成员之一,其语法格式如下: [修饰符]{ //初始化块的可执行代码 ... } 初始化块的修饰符只能是static,使用static修饰符的初始化块称为静态初始化块,后面会介绍到. 下面

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

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

子父类 构造代码块 静态代码块 初始化过程

1 class Fu{ 2 Fu(){//调用show方法 被子类重写 num=0; 3 System.out.println("Fu constructor....."); 4 show();//实际是子类方法//zi..show 0 5 } 6 static{ 7 8 System.out.println("fu静态代码块"); 9 } 10 { 11 System.out.println("FU构造代码块"); 12 } 13 void

关于Java静态代码块、初始化块、构造函数的调用顺寻问题?

public class ClassA { public ClassA(){ System.out.println("A 构造..."); } { System.out.println("this is A...."); } static{ System.out.println("A static..."); } } public class ClassB extends ClassA{ public ClassB(){ System.out.p