gpt4 book ai didi

方法内的Java空 block 与其他 block 不同?

转载 作者:行者123 更新时间:2023-12-02 01:53:27 24 4
gpt4 key购买 nike

我知道 block 定义了变量的范围。方法内的空 block 用于设置范围。但是为什么方法内部的空 block 初始化变量也与循环等使用的 block 不同。

class A{
public static void main(String args[]){
int a;
int b:
{
a = 10;
}
for(int i = 0; i < 1; i++){
b = 20;
}
System.out.println(b); //error here
System.out.println(a);
// doesnt give error and prints 10. why?
}
}

我的问题是:为什么方法内的空 block 的属性与循环或条件 block 等使用的 block 不相似

最佳答案

因为 a 的 block 无论如何都会被执行,因为没有封闭的运算符。但是 b 是在循环内部初始化的,因此编译器认为 b = 20 仅在循环内部执行,如果循环未执行,则 b 未初始化。并且编译器不会运行您的代码来了解不存在不执行循环的代码路径。

关于方法内的Java空 block 与其他 block 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52652117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com