gpt4 book ai didi

java - 为什么在 java 中方法外的变量可以有重复的变量名?

转载 作者:行者123 更新时间:2023-11-29 07:36:25 25 4
gpt4 key购买 nike

我正在学习 Java,我知道您不能将在内部作用域中声明的变量命名为与在外部作用域中声明的变量相同的名称,如下所示

public class Practice {
public static void main(String[] args){
int x = 10;
if (x == 10){
int x = 10;
}
}
}

但是,我注意到以下内容并不违法

public class Practice {
int x = 10;
public static void main(String[] args){
int x = 10;
if (x == 10) {
}
}
}

这不是声明了两次的变量吗??

最佳答案

Is this not a variable that is declared twice??

不,不是。因为它们都在不同的范围内。 main 函数之外的 x 具有类级别作用域main 内部的 x 具有方法/函数级范围

2个不同作用域的变量同名是合法的。

请务必阅读 §6.3. Scope of a Declaration来自 JLS。以下是该部分的部分声明。

The scope of a declaration is the region of the program within which the entity declared by the declaration can be referred to using a simple name, provided it is visible (§6.4.1).

A declaration is said to be in scope at a particular point in a program if and only if the declaration's scope includes that point.

The scope of a local variable declaration in a block (§14.4) is the rest of the block in which the declaration appears, starting with its own initializer and including any further declarators to the right in the local variable declaration statement.

有很多与范围相关的概念,例如阴影,所以请阅读§6.4. Shadowing and Obscuring .

JLS 是了解 Java 中允许和不允许的内容的最佳场所。请随意阅读那里的章节。

关于java - 为什么在 java 中方法外的变量可以有重复的变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248937/

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