类成员(代码块)

简介: 类成员(代码块)

代码块

在Java中,使用{}括起来的代码被称为代码块(Code block),根据其位置和声明的不同,可以分为:

局部代码块。

构造代码块。

同步代码块。

静态代码块。

1.代码块(或初始化块)的作用

  • 对Java类或对象进行初始化

2.代码块(或初始化块)的分类:

  • 一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块 (static block),没有使用static修饰的,为非静态代码块。
  • static代码块通常用于初始化static的属性
class Person {
public static int total;
static {
total = 100;//为total赋初值
}
…… //其它属性或方法声明
}
  • 静态代码块:用static 修饰的代码块
  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
  4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
  5. 静态代码块的执行要先于非静态代码块。
  6. 静态代码块随着类的加载而加载,且只执行一次
  • 非静态代码块:没有static修饰的代码块
  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 除了调用非静态的结构外,还可以调用静态的变量或方法。
  4. 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
  5. 每次创建对象的时候,都会执行一次。且先于构造器执行。

静态初始化块举例:

class Person {
public static int total;
static {
total = 100;
System.out.println("in static block!");
}
}
public class PersonTest {
public static void main(String[] args) {
System.out.println("total = " + Person.total);
System.out.println("total = " + Person.total);
  }
}
输出:
in static block
total=100
total=100

由上述例子可得出结论

总结:程序中成员变量赋值的执行顺序

1.声明成员变量的默认初始化

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

3.构造器再对成员进行初始化操作

4.通过”对象.属性”或”对象.方法”的方式,可多次给属性赋值

相关文章
|
6月前
|
设计模式 算法 安全
【C/C++ 关键字 函数说明符 】C++ final关键字(修饰成员函数无法被子类重写覆盖)
【C/C++ 关键字 函数说明符 】C++ final关键字(修饰成员函数无法被子类重写覆盖)
138 1
|
4月前
|
编译器 C++
【C++】详解初始化列表,隐式类型转化,类静态成员,友元
【C++】详解初始化列表,隐式类型转化,类静态成员,友元
实例详解局部代码块,构造代码块,静态代码块
实例详解局部代码块,构造代码块,静态代码块
|
6月前
|
存储 监控 编译器
【C++】static关键字及其修饰的静态成员变量/函数详解
【C++】static关键字及其修饰的静态成员变量/函数详解
145 3
|
11月前
|
编译器 C++
C++类和对象下(初始化列表,静态成员,explicit关键字,友元)(上)
C++类和对象下(初始化列表,静态成员,explicit关键字,友元)
|
11月前
|
编译器 C++ 容器
C++类和对象下(初始化列表,静态成员,explicit关键字,友元)(下)
C++类和对象下(初始化列表,静态成员,explicit关键字,友元)
|
安全 Java 编译器
代码块 继承 多态
代码块 继承 多态
47 0
|
Java 编译器
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
哈喽,大家好,我是指北君。 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
静态代码块、构造代码块、构造函数、普通代码块,还傻傻的分不清?(上)
|
架构师 Java Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)