【发布时间】:2020-06-23 07:17:31
【问题描述】:
public class Main {
void sum(int a, int b) {
System.out.println((a + b));
Main ob = new Main();
ob.difference(200, 100);
}
void difference(int a, int b) {
System.out.println((a - b));
}
public static void main(String args[]) {
Main ob = new Main();
ob.sum(100, 25);
}
}
当我在主方法中创建同名对象时,编译器会抛出错误,但是当我在不同方法中创建同名对象时,它会被编译。为什么会这样?
【问题讨论】:
-
变量有一个范围。在方法中声明的变量是该方法的本地。相同的名称可以在不同的范围内使用,没有任何问题。出于同样的原因,您不能使用在另一个方法中声明的变量。
-
用外行的话来说,范围基本上是每个
{ }集合中的内容。无论您在其中的每一个中写入什么都是一个单独的变量,并且不会相互冲突。但是,当您在单个作用域或父子作用域中创建两个相同名称时,就会发生这种情况。 -
" 编译器抛出错误" - 这个错误很重要。将其包含在您的问题中!