Class A{int x;
pulbic void jjj(){int x = 0;//这里我知道是作用范围的原因可是为什么成员变量x的作用范围不影响这里的x呢??
for(){
int x = 1;//错误,成员变量和局部变量的作用范围是怎么个关系呢?希望达人指点迷津啊!
}}}

解决方案 »

  1.   

    成员变量指的是类的属性局部变量指的是在类的方法里自定义的变量你在jjj()方法里声明了int x=0;它是有作用范围和生命周期的,它的作用范围就是整个jjj()方法,出了jjj()方法就不能再进行使用了.所以你在for循环里不能在使用定义x的变量了.如果定义为y,则y的作用范围和生命周期为for循环内,出了for循环就作用范围就结束了
      

  2.   

    成员变量就是类的
    局部变量就是方法的!大致是这样的
    你在for定义int i=1是不行的,因为前面已经有int x=0了,他的作用是整个方法有效的
      

  3.   

    楼上说的很明白了,成员变量不管是public,private,protected,它在整个类都可以调用.相同作用范围中不能定义两个名字一样的变量
      

  4.   

    成员变量,可作用于整个类
    局部变量,只作用于局部,也就是在if{}或者for{}....在花括号内使用
    如果局部变量和成员变量名想同,则在局部内调用成员变量需要使用this才会指向成员变量.
      

  5.   

    int x = 0;//这里我知道是作用范围的原因可是为什么成员变量x的作用范围不影响这里的x呢??
    你这里是在方法里面定义的,并非使用this.x或者x。可以看做成员x被覆盖。int x = 1;//错误,成员变量和局部变量的作用范围是怎么个关系呢?希望达人指点迷津啊! 
    for里面不能定义int x的形式。
      

  6.   

    成员变量,和局部变量,两者之间不存在,作用域覆盖的问题
    int x = 0,不包错就是这个原因
    如果,在这一行之后,想给成员变量赋值,在使用x = ?是达不到目的的,应该写成this.x = ?
    这就是说,在方法内,成员变量,和方法的局部变量是区分开的,也就是说,计算知道,你使用x这个变量时是哪一个变量,所有不会出现错误int x = 1,报错是因为,系统无法区分,你用的“int x = 0”的x还是“int x = 1”的x,所有会报错。
      

  7.   

    java中貌似是不存在变量覆盖吧!
      

  8.   

    成员变量,整个类都能使用
    局部变量,只有方法内部可以使用
    如果局部变量和成员变量名想同,则在局部内调用成员变量需要使用this才会指向成员变量.
      

  9.   

    类体分为两部分。变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量java中成员变量和局部变量的区别
    1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型2.成员变量存储在堆,局部变量存储在栈3.存在时间不同4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值 
      

  10.   

    同一个方法内不可以有两个相同的成员变量吧。。
    举例:例如你两个for循环里面,第一个for是用i做下标,第二个for就不能用i做下标,只能用j....等等其它
      

  11.   

    同意LS的,你程序错误是方法里面变量名同名问题,没有涉及到全局变量和局部变量问题,
    全局变量时类的成员变量,每次new对象,它会伴随对象从诞生到消亡,而局部变量是属于方法的或结构体的,出了方法或机构体就没有作用域了。