• Java类中成员变量、局部变量、静态变量的区别


    在Java类中,变量一共分为三种,成员变量局部变量静态变量

    本篇博客主要说明成员变量和局部变量的区别:

    1.定义的位置不一样
    局部变量:定义在方法的内部
    成员变量:定义在方法的外部,直接写在类中
    2.作用范围不同:
    局部变量:只有方法中才可以使用,方法之外无法使用;
    成员变量:整个类可以通用:

    此类中,定义了成员变量name和局部变量num;
    methodA中,方法可以调用自身的局部变量num,也可以调用全局变量name;
    methodB中,方法仍可以调用成员变量name,但是无法调用methodA中的局部变量num;
    public class VariableDifference {
        String name;
        public void methodA()
        {
            int num=20;
            System.out.println(num);
            System.out.println(name);
        }
        public void menthodB(int param)
        {
            System.out.println(param);
            //System.out.println(num);报错,num不是此方法的局部变量,也不是成员变量,无法调用
            System.out.println(name);//name是成员变量,可以调用
        }
    }
    3.默认值不一样
    局部变量:没有默认值,如果想要使用,必须手动进行赋值
    成员变量;如果没有赋值,会有默认值,规则和四类数据一样;

    此类中,num1没有赋值直接输出,编译会直接报错,局部变量必须赋予合法的数据才可以被输出;
    作为成员变量的name不需要赋值也可以被输出,成员变量在被赋值前,编译器会在编译时给予成员变量一个默认的值。
    需要注意的是,不同类型的成员变量所被赋予的默认值是不一样的;(详见随笔文末)
    public class VariableDifference {
        String name;//成员变量
        public void methodA()
        {
    //        int num1;
    //        System.out.println(num1);
    //        局部变量必须赋值之后才可以正常使用,否则会报错
            int num=20;
            System.out.println(num);
            System.out.println(name);//调用成员变量;有默认值,不需要赋值也能调用
    
        }
        public void methodB(int param)//参数是局部变量;调用此方法时,参数必被赋值
        {
            System.out.println(param);
        }
    }

    成员变量和局部变量的主要区别如上述;除此之外,还有两点区别,在此只略说,详细区别后续开贴细说;
    4.内存位置不一样
    局部变量:位于栈内存;
    成员变量;位于堆内存;

    5.生命周期不一样
    局部变量:随着方法进栈而诞生,随着方法出栈消失
    成员变量;随着对象的创建而诞生,有默认值;


    成员变量没有被赋值时编译器所给默认值为:
    Boolean            flase;
    byte、short、int、long    0;
    float、double         0.0;
    char              null;

     
  • 相关阅读:
    如何才算掌握JavaSE?
    JAVA学习之路:不走弯路,就是捷径
    让IT人远离慢性疲劳,长时间操作电脑需要养成的几个好习惯
    成为Java高手的25个学习目标非常经典
    程序员如何走到金字塔最高层
    jQuery强大的jQuery选择器 (详解)[转]
    不学必悔
    nginx的核心配置
    java中使用MemCached
    java 使用反射中的几个方法区别
  • 原文地址:https://www.cnblogs.com/jokershaco/p/13461076.html
Copyright © 2020-2023  润新知