Class A{int x;
pulbic void jjj(){int x = 0;//这里我知道是作用范围的原因可是为什么成员变量x的作用范围不影响这里的x呢??
for(){
int x = 1;//错误,成员变量和局部变量的作用范围是怎么个关系呢?希望达人指点迷津啊!
}}}
pulbic void jjj(){int x = 0;//这里我知道是作用范围的原因可是为什么成员变量x的作用范围不影响这里的x呢??
for(){
int x = 1;//错误,成员变量和局部变量的作用范围是怎么个关系呢?希望达人指点迷津啊!
}}}
局部变量就是方法的!大致是这样的
你在for定义int i=1是不行的,因为前面已经有int x=0了,他的作用是整个方法有效的
局部变量,只作用于局部,也就是在if{}或者for{}....在花括号内使用
如果局部变量和成员变量名想同,则在局部内调用成员变量需要使用this才会指向成员变量.
你这里是在方法里面定义的,并非使用this.x或者x。可以看做成员x被覆盖。int x = 1;//错误,成员变量和局部变量的作用范围是怎么个关系呢?希望达人指点迷津啊!
for里面不能定义int x的形式。
int x = 0,不包错就是这个原因
如果,在这一行之后,想给成员变量赋值,在使用x = ?是达不到目的的,应该写成this.x = ?
这就是说,在方法内,成员变量,和方法的局部变量是区分开的,也就是说,计算知道,你使用x这个变量时是哪一个变量,所有不会出现错误int x = 1,报错是因为,系统无法区分,你用的“int x = 0”的x还是“int x = 1”的x,所有会报错。
局部变量,只有方法内部可以使用
如果局部变量和成员变量名想同,则在局部内调用成员变量需要使用this才会指向成员变量.
1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型2.成员变量存储在堆,局部变量存储在栈3.存在时间不同4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
举例:例如你两个for循环里面,第一个for是用i做下标,第二个for就不能用i做下标,只能用j....等等其它
全局变量时类的成员变量,每次new对象,它会伴随对象从诞生到消亡,而局部变量是属于方法的或结构体的,出了方法或机构体就没有作用域了。