static成员与代码块

简介: static成员与代码块

1.static成员

1.1static修饰静态成员变量

static修饰的成员变量,称为静态成员变量

1.1.1静态成员变量不属于某个具体的对象,是所有对象所共享的,直接通过类名进行访问。

此时的classRoom就是一个静态成员变量

2.1static修饰静态成员方法

2.1.1在静态方法内部不能直接调用非静态的成员方法


2.1.2非静态的数据成员都需要对象来引用,静态方法里面不能使用this

2.1.3非静态成员方法内部可以使用静态成员方法

3.1static成员变量初始化

静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性

3.1.1就地初始化

3.1.2默认初始化

3.1.3通过get和set方法进行初始化

3.1.4通过代码块进行初始化


2.代码块

2.1普通代码块

定义在方法内部的代码块称为普通代码块

2.2构造块(非静态代码块)

定义在类里面方法外面的代码块称为构造块

构造块一般用于初始化非静态数据成员

当存在构造块和构造方法时,那么先打印的是哪一个呢?

我们可以看到先被执行的是构造块(非静态代码块),然后才是构造方法

那么有些小伙伴会问,会不会是顺序的问题呢,那么我们颠倒一下顺序再来验证一次

结果仍然是相同的。所以,可以得到的结论是:构造块执行顺序在构造方法的前面

在构造块(非静态代码块)和非静态成员变量中分别赋值,那么打印的结果看定义的顺序

定义顺序颠倒

2.3静态代码块

代码块前有static称为静态代码块,一般用于初始化静态的数据成员或提前准备一些数据

当存在构造方法,构造块,静态代码块时,执行顺序为静态代码块,构造块,构造方法


注意:静态代码块不管生成多少个对象,其只会执行一次

此时生成了2个对象,但静态代码块只被执行了1次

相关文章
|
7月前
|
C++
【c++】static成员
【c++】static成员
【c++】static成员
|
7月前
final修饰的变量有三种
final修饰的变量有三种
87 0
|
7月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
69 4
|
2月前
学习 static 定义静态变量的用法
学习 static 定义静态变量的用法。
54 13
|
存储 编译器 C语言
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
354 0
|
7月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
110 1
|
Java
深入理解static的作用以及被static修饰的变量、方法、块
static关键字有以下三种使用方法: 1.被static修饰的变量属于静态变量,类变量,可以通过类名,变量名直接引用,不需要进行new一个新类。 2.被static修饰的方法属于静态方法,类方法,可以通过类名,方法名直接引用,而不需要new出来一个对象 3.静态块,用于初始化一个类的时候进行一些操作,静态变量、静态方法和静态代码块都只执行一次,而且只在初始化的时候执行。
305 1
关于static修饰的成员方法成员成员变量的相关讨论
关于static修饰的成员方法成员成员变量的相关讨论
|
C++
【C++】static成员
【C++】static成员
96 0
【C++】类内成员析构函数 常函数 static的介绍 浅拷贝
【C++】类内成员析构函数 常函数 static的介绍 浅拷贝
140 0