public class Cat {
int age;
int weight;
public Cat() {
}
public static void main(String[] args) {
for(int i=0; i<10; i++) {
Cat cat = new Cat();
}
}
}这个有问题么? 循环创建了10个类的实例不都重名了么?
int age;
int weight;
public Cat() {
}
public static void main(String[] args) {
for(int i=0; i<10; i++) {
Cat cat = new Cat();
}
}
}这个有问题么? 循环创建了10个类的实例不都重名了么?
在Java中,方法内的一个变量的作用域(包括方法参数)是从它定义的地方开始,直到它所在的作用域的结束位置。
比如,在方法开始定义了变量i,那么直到方法结束都不能再定义另一个i了。再比如在一个for语句中定义了变量i,那么在这个for循环内不能再有同名变量,但出了for循环之后,是可以再次定义的。这就是作用域不能嵌套的意思。
在c/c++中,作用域可以嵌套,比如:
int i;
{
int i;
{
......可以无限制地嵌套下去,这里每对大括号之间就是一个独立的作用域
}
}再深入一点,在Java中,类与方法之间作用域是可以嵌套的,把类看做一个大的作用域,它定义的字段(或叫域)可以被方法中的同名字段所屏蔽,其行为类似于上面将的c/c++的作用域嵌套。