zoukankan      html  css  js  c++  java
  • java中成员变量和局部变量的区别

    转自:http://blog.sina.com.cn/s/blog_742350ef0100qt42.html

    ————————————————————————————————————

    先看下面两段程序:

    程序一:
    public class Variable
    {
    int i;
    void test()
    {
       int j=8;
       if(j==i)
        System.out.println("相等");
       else
        System.out.println("不相等");
    }
    public static void main(String[] args)
    {
       Variable v=new Variable();
       v.test();
    }
    }

    程序二:
    public class Variable
    {
       void test()
    {
       int i;
       int j=8;
       if(j==i)
        System.out.println("相等");
       else
        System.out.println("不相等");
    }
    public static void main(String[] args)
    {
       Variable v=new Variable();
       v.test();
    }
    }

    ----------------------------------------------------------------------------------------------------------

    第一个程序很正常,编译时不会出错。第二个程序编译时会提示如下错误:

    D:Programjava est>javac Variable.java
    Variable.java:9: 可能尚未初始化变量 i
                    if(j==i)
                          ^
    1 错误

    之所以会出现这样的错误是因为:成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值

    ===========================================================

    类体分为两部分。变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量

    java中成员变量和局部变量的区别

    1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
    2.成员变量存储在堆,局部变量存储在栈
    3.存在时间不同
    4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
    -------------------------------------------------------------------------------------------------------------
    顾名思意了
    什么是局部,方法内部,块内部都是局部,执行指令退出那个局部,局部变量自动清除

    比如方法中,不用说
    块中
    {
      int i=0; //这是一个局部变量,它的作用范围就在其中 
    }

    成员变量就会涉及到谁的成员,类的成员?实例的成员?

    class A{
    int i=0; //实例的成员
    static j=1;//类的成员
    }

    static 的差别,是否依赖于实例而存在
    ----------------------------------------------------------------------------------------------------------

    成员变量:作为类的成员而存在,直接存在于类中。

    局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。

    局部变量在使用前必须被程序员主动的初始化,和此形成对比,系统中的成员变量则会被系统提供一个默认的初始值。所以在语法上,类的成员变量能够定义后直接使用,而局部变量在定义后先要赋初值,然后才能使用。

    所有类的成员变量可以通过this来引用。成员变量又分成俩中类型:实例变量和静态变量。静态变量在定义时要使用static关键字。

  • 相关阅读:
    ORACLE中的TOP-N查询(TOP-N分析)、分页查询
    ORACLE复杂查询之子查询
    ORACLE复杂查询之连接查询
    利用rand7() 产生rand10()(腾讯)
    汉罗塔1(递归和分治)
    数位dp(不要62)
    数位dp(二进制01问题)
    多重背包
    模拟(所有边权)
    模拟(进制)
  • 原文地址:https://www.cnblogs.com/kaikailele/p/3917799.html
Copyright © 2011-2022 走看看