首页 新闻 会员 周边

static关键字

0
[已解决问题] 解决于 2024-02-03 23:28


B类中的这两段代码哪个会先执行?

戈壁老王-的主页 戈壁老王- | 初学一级 | 园豆:191
提问于:2024-01-27 23:34
< >
分享
最佳答案
1

你这段代码跟 class B {
static int age = 100; // 在声明时初始化
} 没有什么区别吧?而且这不是方法,而是变量的声明,非要说执行先后顺序,那也是先声明int age,再赋值100

奖励园豆:5
人间春风意 | 老鸟四级 |园豆:2578 | 2024-01-29 09:19

类的初始化时,先会执行静态代码块虽然在静态代码块中先将age赋值为100,但是在完成类的初始化后,静态变量age才会被正确地声明并赋值为100
AI说的

人间春风意 | 园豆:2578 (老鸟四级) | 2024-01-29 09:25

@人间春风意: 在类加载时,需要先申明静态变量,应该是有个初始默认值为0吧?然后按照书写的顺序依次加载静态代码块对吗?

戈壁老王- | 园豆:191 (初学一级) | 2024-01-30 23:03
其他回答(2)
0

在Java中,static 关键字用于声明类级别的成员,包括静态字段(static fields)和静态方法(static methods)。当类被加载时,静态块和静态字段的初始化会按照它们在类中的顺序执行。

给定两个类 A 和 B,其中 B 中包含静态字段和静态块,这两个类被加载的顺序取决于程序中是否使用了这两个类,以及它们之间的关系。

以下是一些可能的情况:

如果 B 类中的静态字段或静态块被 A 类直接引用,那么在使用 A 类之前,B 类会被加载,B 类中的静态块会先执行。

java
Copy code
class A {
// A 类中可能有一些其他代码
static {
// A 类中可能直接引用了 B 类的静态字段或静态块
// 此时 B 类的静态块会在 A 类的静态块之前执行
}
}
如果 A 类中没有直接引用 B 类的静态字段或静态块,那么 A 类会先被加载,A 类中的静态块会先执行。

java
Copy code
class A {
// A 类中没有直接引用 B 类的静态字段或静态块
static {
// A 类中的静态块会先执行
}
}
在实际编程中,确保类之间的静态依赖关系被正确管理是很重要的。如果 A 类依赖于 B 类的静态内容,那么在使用 A 类之前,B 类必须被加载,以保证正确的初始化顺序。

Technologyforgood | 园豆:6772 (大侠五级) | 2024-01-29 20:23
0

我用C++试了一下,报错,好像C++这样写是不对的
static{
this->age = 0;
}
不懂,求大佬解答

AtanChen | 园豆:460 (菜鸟二级) | 2024-01-31 16:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册