A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聂益飞 高级黑马   /  2013-1-12 13:01  /  2833 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

成员变量,局部变量!!这里概念有些模糊!!

12 个回复

倒序浏览
就是for循环,方法里面的变量
回复 使用道具 举报
祝文丞 发表于 2013-1-12 13:05
就是for循环,方法里面的变量

。。。。。。。。你说的是啥呀......
回复 使用道具 举报
本帖最后由 陈丽莉 于 2013-1-12 13:21 编辑

成员变量:在类体的变量部分中定义的变量,也称为属性。生存周期从类的对象建立到不再使用。而且可以被类内部的函数等调用。
比如:
class Student
{
       String name;                                            //成员变量
       int age;
}

局部变量是在函数内部定义的,生存周期只是从这个函数执行到函数结束,在类中,函数外是不能直接调用局部变量的。
同时若局部变量和全局变量重名时,局部执行时,是以局部变量为准的。
比如:
class Student
{
       public static void main(String[] args)
       {
                int age;                                            //局部变量
       }
}

评分

参与人数 1黑马币 +10 收起 理由
Rancho_Gump + 10 赞一个!

查看全部评分

回复 使用道具 举报
niexiaolu 发表于 2013-1-12 13:13
。。。。。。。。你说的是啥呀......

我猜应该是想说,比如:
for(int x=0;x<5;x++)
这里的x就是局部变量。
回复 使用道具 举报
成员变量:类中不在方法中
局部变量:类中方法中
回复 使用道具 举报
局部变量或者代码块中
回复 使用道具 举报
陈丽莉 发表于 2013-1-12 13:15
成员变量:在类体的变量部分中定义的变量,也称为属性。生存周期从类的对象建立到不再使用。而且可以被类内 ...

是否可以理解为,对象中使用的变量就是成员变量,函数中定义的变量就是局部变量
回复 使用道具 举报
本帖最后由 刘亦茜 于 2013-1-12 16:05 编辑

局部变量:
你定义函数以后,是不是要在函数里定义一些变量?比如:
public ststic int woqua(int a)
{
     int b;
……………………
}
这个b仅在函数woqua中使用,一旦离开了woqua,这个b就无效了,这就是局部变量。那个变量a 也是同理的局部变量。
也就是说,在一个函数内部定义的变量就是局部变量。主函数内定义的也是局部变量。
成员变量:
正如楼上的同学说的,定义类的过程中所使用的变量就是成员变量。
回复 使用道具 举报

可以在一行中定义多个局部变量,以逗号分隔。

定义变量时可以同时赋初值。

局部变量必须要先定义后使用。

例如,下面就是一些局部变量的定义:

final double PI = 3.1416;
int  ix, iy;
final int MAIL = 0;

从形式上看,局部变量和类的成员变量十分相似,但在使用上它们的区别很大。

局部变量没有访问权限修饰符,不能用public、private和protected来修饰。这是因为它只能在定义它的方法内部使用。

局部变量不能用static修饰,没有"静态局部变量",这是Java和C/C++的一个细微差别。

系统不会自动为局部变量赋初值,但对于成员变量,系统会自动赋初值。基本类型的值为0,复合类型的值为null。

局部变量的作用域仅限于定义它的方法,在该方法的外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量。

局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用域的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员变量,它和对象的生存期相同。而静态成员变量的生存期是整个程序运行期。

在同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量,它们互不干涉。

局部变量可以和成员变量同名,且在使用时,局部变量具有更高的优先级。

【例3.12】 局部变量使用示例。

//-----------文件名localVariable.java,程序编号3.22-----------------

public class localVariable{
public void method_1(){
int va = 0;    //正确
public int pva;   //错误,不能有访问权限
static int sa;   //错误,不能是静态的
final int CONST = 10; //正确,可以是常量
double va =0.0;   //错误,与前面的va同名
vb = 100.0;    //错误,vb还未定义
double vb;
vb = 100.0;    //正确,现在可以使用了   
}
public void method_2(){
va = 0;     //错误,method_1()中的变量va在此不可用
int CONST = 100;   //正确,它与method_1()中的CONST不同
}
}

【例3.13】 局部变量与成员变量同名问题示例。

//-----------文件名localVSmember.java,程序编号3.23-----------------

public class localVSmember{
private int iVar = 100;
public void method_1(){
int iVar;    //正确可以与成员变量同名
iVar = 200;    //这里访问的是局部变量
this.iVar = 300;  //这里访问的是成员变量
}
public void method_2(){
iVar = 400;    //这里访问的是成员变量
}
}

在程序3.23中,同名的局部变量会屏蔽掉成员变量。为了访问被屏蔽的成员变量,需要使用一个前缀"this",它表示的是"本对象"。

点评

谢谢!这下清晰多了!!如有可能!还请多举几个成员变量的例子!局部是明白清晰了!成员也差不多了  发表于 2013-1-12 15:42
回复 使用道具 举报
niexiaolu 发表于 2013-1-12 13:34
是否可以理解为,对象中使用的变量就是成员变量,函数中定义的变量就是局部变量 ...

对象通过“对象名.变量名”这样使用的就是成员变量(因为对象中也是可以再定义方法的)
函数中定义的变量是局部变量的。
恩,这样理解简单多了,呵呵~
回复 使用道具 举报
这么理解简单点,把成员变量理解成全局变量

例:在for 里面的变量 叫局部变量,出了for就释放了,不能使用了
class 里面定义个 int a= 1;  在这个类都能使用这个a,(只能在这个类中使用)
回复 使用道具 举报
洪建超 发表于 2013-1-12 13:43
可以在一行中定义多个局部变量,以逗号分隔。

定义变量时可以同时赋初值。

超哥威武,霸气侧漏{:2_32:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马