void method() {
int i = 0;
{ //这里是一个普通的代码块,里面定义的i和上面定义的i都是局部变量,所以 重复。
int i = 4;//这样是错误的,因为会重复声明。
}
}
但是,在这个类里面
class Person {
int age ; //这个age是类成员变量,作用域是整个类,相当于this.age,只是把this省略了。
void eat() {
int age = 20;//这样就是可以的,程序不会报错 //而这个age是个普通的局部变量,作用域是eat方法,跟上面的age虽然作用域有重复,但不是相同的变量,所以不重复。
}
}
作者: 孙岳 时间: 2012-9-26 14:26
补充一点,还记得setName方法吗?
public Person
{
private String name;
public void setName(String name)
{
this.name = name;
}
}
为什么要写this.name呢?就是因为如果写name = name的话,这两个name都是参数里的name,相当于自己赋给自己,加上this才是类变量name,才是给类变量赋值。所以,类里面的name和方法里的name是不一样的。作者: 李润根 时间: 2012-9-26 15:12
楼上正解,可以看下这BLOG
http://blog.csdn.net/woainike/article/details/6413984作者: 杜正华 时间: 2012-9-26 18:41
class Person {
int age ;
void eat() {
int age = 20;//这样就是可以的,程序不会报错
}
}