精华内容
下载资源
问答
  • 关于java成员变量和局部变量

    万次阅读 多人点赞 2018-09-14 10:46:45
    1、成员变量和局部变量简述 在Java语言里,根据定义变量位置的不同,...变量从该的准备阶段起开始存在,直到系统完全销毁这个类变量的作用域与这个的生存范围相同; 而实例变量则从该的实例被创建起开...

    1、成员变量和局部变量简述

    在Java语言里,根据定义变量位置的不同,可以将变量分成两大类:成员变量(存在于堆内存中,和类一起创建)和局部变量(存在于栈内存中,当方法执行完成,让出内存,让其他方法来使用内存)。二者的运行机制存在较大差异。

    1.1成员变量

    类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;

    而实例变量则从该类的实例被创建起开始存在,直到系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。

    正是基于这个原因,可以把类变量和实例变量统称为成员变量。其中类变量可以理解为类成员变量,它作为类本身的一个成员,与类本身共存亡;实例变量则可以理解为实例成员变量,它作为实例的一个成员与实例共存亡。

    只要类存在,类就可以访问类变量         类.类变量

    只要实例存在,实例就可以访问实例变量        实例.实例变量

    当然实例也可以访问类变量。但是需要注意的是因为实例不拥有类变量,所以通过实例来访问类变量进行操作,实际上是对类变量进行操作 ,当有其他实例来访问类变量时,访问的类变量是被对象访问操作过的类变量。

    成员变量无需显示初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化。

    1.2局部变量

    局部变量根据定义形式的不同,又可以分为如下三种:

    形参:在定义方法签名时定义的变量,形参的作用域在整个方法中都有效

    方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时失效

    代码块局部变量:这个局部变量的作用域从定义该变量的地方生效,到该代码结束时失效。

    一个变量只在一对{}中起作用。。

    java允许局部变量和成员变量同名,如果方法中局部变量和成员变量同名,局部变量就会覆盖成员变量,如果需要在这个方法中引用被覆盖成员变量,则可使用this(对于实例变量)或类名(对于类变量)作为调用者来限定访问成员变量。

    2、成员变量的初始化和内存中的运行机制

    接下来以下面代码来举例说明成员变量的初始化和内存中的运行机制

     

    复制代码

     1 public class Person {
     2     public int num;
     3     public String name;
     4     
     5     public static void main(String[] args) {
     6         Person p1 = new Person();
     7         Person p2 = new Person();
     8         p1.num = 2;
     9         p2.num = 3;
    10         p1.name = "张三";
    11         p2.name = "李四";
    12     }
    13     
    14 
    15 }

    复制代码

     

    当程序执行Person p1 = new Person();时,如果这行代码是第一次使用Person类,则系统通常会在第一次使用Person类时加载这个类,并初始化这个类,在类的准备 阶段,系统将会为该类的类变量分配内存空间,并指定默认初始值。当person类初始化完成后,系统内存中的存储示意图如下图所示。

     可以看出,当person类初始化完成后,系统将在堆内存中为Person分配一块内存空间,实际上是创建了一个类对象,在这块内存区里包含了保存num类变量的内存,并设置num的默认初始值为0。

    系统接着创建了一个Person对象,并把这个Person对象赋给p1变量,Person对象包含了名为name的实例变量,实例变量是在创建实例时分配内存空间并指定初始值的。当创建了第一个person对象后,系统内存中的存储示意图如下图所示。

    从上图可以看出num不属于对象,它属于类,所以创建第一个对象时并不需要为num分配内存空间,系统只是为name分配了内存空间,并指定初始值为null。

    创建第二个对象p2时,由于在创建第一个对象时已经对类进行了初始化,所以在创建p2时对类进行初始化,对象的创建过程与第一个对象的创建过程没有什么区别。

    第二个对象创建完成后,成员变量如上图所示在内存中存储。

    **当程序需要访问类变量时,尽量使用类来作为主调,不要使用对象作为主调,这个可以避免产生歧义。

    3、局部变量的初始化和内存中的运行机制

    *局部变量必须经过显示初始化之后才能使用,系统不会为局部变量执行初始化。定义了局部变量以后,系统并没有给局部变量进行初始化,直到程序给这个局部变量赋给初值时,系统才会为这个局部变量分配内存空间,并将初始值保存到这块内存中。

    *局部变量不属于任何类或者实例,因此它总是保存在方法的栈内存中。如果局部变量是基本数据类型,则该变量直接存储在方法的栈内存中,如果是引用变量则将引用的地址存储在方法的栈内存中。

    *栈内存中的变量无需系统垃圾回收,随着方法或者代码块的运行结束而结束。局部变量通常只保存了具体的值或者引用地址,所以所占的内存比较小。

    4、变量的使用规则

    能不使用成员变量就别使用成员变量

    能不使用方法局部变量就别使用方法局部变量

    使用代码块局部变量性能最好。

     

     

     

    展开全文
  • 1.JAVA中没有全局变量,只有局部变量和成员变量两个变量。 2.其中在类中定义的成员变量,而在函数中...6.成员变量和局部变量的作用范围成员变量成员变量作用在整个类中 局部变量:作用在函数中或者语句中 7.在

    1.JAVA中没有全局变量,只有局部变量和成员变量两个变量。

    2.其中在类中定义的成员变量,而在函数中定义的刚是局部变量。

    3.局部变量只能在其声明的方法内部访问。

    4.成员变量和局部变量在内存中的位置:

    成员变量:在堆中,因为对象的存在而在内存中存在

    局部变量:在栈中

    6.成员变量和局部变量的作用范围:

    成员变量:成员变量作用在整个类中

    局部变量:作用在函数中或者语句中

    7.在Java中,局部变量必须初始化;成员变量可以不用初始化,系统自动初始化。

     

    例:

    class A
    {
    int a;    //这是成员变量 在整个类中均有效
    public static void main(String[] args)
    {
    int b;    //这是局部变量 只有在此方法内有效
    }
    }

     

    展开全文
  • 关于变量的分类: 根据变量声明的位置来分类:  局部变量 在方法体当中声明的变量叫做局部变量  成员变量 在方法体外(体之内)声明的变量叫做成员变量 注:在不同的作用域当中,变量名可以相同的,在同一...

    关于变量的分类:

    根据变量声明的位置来分类:

     局部变量

    • 在方法体当中声明的变量叫做局部变量

     成员变量

    • 在方法体外(类体之内)声明的变量叫做成员变量

    注:不同的作用域当中,变量名可以相同的,在同一作用域当中,变量名不能重名。


    局部变量与成员变量之间的异同:

     作用范围

    • 局部变量:只有方法当中才可以用,出了方法就不能再用
    • 成员变量:整个类全都可以通用。

     默认值不一样

    • 局部变量:没有默认值,如果要想使用,必须手动进行赋值
    • 成员变量:如果没有赋值,会有默认值,规则和数组一样

     内存的位置不一样

    • 局部变量:位于栈内存
    • 成员变量:位于堆内存

     生命周期不一样

    • 局部变量:随着方法进栈而诞生,随着方法出栈而消失
    • 成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
    展开全文
  • 成员变量:在定义变量为成员变量作用范围(scope)是整个,只要在这个中都可以访问到它。 局部变量:在一个方法或方法中的代码块(code block)定义变量。局部变量是在方法或代码块被执行时候...

    成员变量:在类体中定义的变量为成员变量,作用范围(scope)是整个类,只要在这个类中都可以访问到它。

    局部变量:在一个方法或方法中的代码块(code block)中定义的变量。局部变量是在方法或代码块被执行的时候被创建,在方法或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值,否则出现编译错误。

    关于Java中变量的分类:https://blog.csdn.net/weixin_41439527/article/details/79091201
    链接:https://www.cnblogs.com/Andya/p/5669813.html

    展开全文
  • 1.成员变量的作用范围: @public:在任何地方都能直接访问对象的成员变量 @private:只能在当前的对象方法直接访问,如果子类要访问需要调用父类的get/set方法 @protected:可以在当前及其子类对象方
  • 追答:实在是对不起,我自己没认真的思维罗列,然后误导你了,今天我去认认真真的看了java对于 成员变量,实例变量,变量,局部变量,参数的如何定义以及它们的作用范围。 咱们从头再来分析,这次我保证一定正确...
  • 关于this思考

    2017-07-25 19:01:22
    成员变量的作用范围>形式参数作用范围Java语言规定当变量作用范围重叠时,作用域小的变量覆盖作用域大的变量this的作用是引用成员变量 所以冲突的时候,形参的值就起作用了,但是形参一般会是系统默认值
  • 变量的作用域,其实描述的就是变量的有效范围。 在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问。 2、变量的作用域只要记住一句话: 出了大括号就不认识了 关于变量的分类: 根据...
  • 答:描述的是变量的有效范围,在范围之内是可以被访问的,只要出了作用域就无法访问(也就是在大括号里面才行) 3.关于变量的分类 (1)局部变量:在方法体声明的变量; (2)成员变量:在方法体外声明的变量。 4....
  • 关于static

    2007-06-01 15:41:00
    (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它...
  • 1)和java不同的是,public,protected,private的作用范围是在出现下一个关键字之前延续的。java的这几个关键词可以对每一个成员函数或者成员变量进行修饰。C++中类(class)缺省成员变量或者函数类型是...
  • 第二次《错题笔记》

    2020-11-23 22:25:30
    谈谈你对成员变量和局部变量的区别? 在类中的位置不同 成员变量类中,方法外 局部变量:方法中或者方法声明上(形式参数) 作用范围不一样 成员变量类中 局部变量:方法中 初始化值的不同 成员变量:有...
  • 数据逻辑结构在计算机中的表示参考答案:D2[单选题]下面关于变量及其作用范围的陈述哪个是不对?( )A.实例变量是类的成员变量。B.实例变量用关键字static声明。C.在方法定义局部变量在该方法被执行时创建。D...
  • 注释:蓝色题为可不做,红色题为重点1、下面关于变量及其作用范围的陈述哪个是不对?(B )A.实例变量是类的成员变量。B.实例变量用关键字static声明。C.在方法定义局部变量在该方法被执行时创建。D.局部变量在...
  • B 实例变量是类的成员变量 实例变量用关键字 static 声明 //Static 声明变量 C在方法定义局部变量在该方法被执行时创建 D 局部变量在使用前必须被初始化 2下面哪条语句把方法声明为抽象公共方法 ?...
  • JavaSE小知识(二)

    2020-11-20 19:42:50
    成员变量:当前类中 c.默认值 局部变量:无 成员变量:不赋值会有默认值,规则与数组默认值相同 d.内存位置 局部变量:栈内存中 成员变量:堆内存中 e.生命周期 局部变量:同当前方法进\出栈内存而生成\销毁 成员...
  • ( A ) 1下面关于变量及其作用范围的陈述哪个是不对 (B ) A 实例变量是类的成员变量 B 实例变量用关键字 static 声明 //Static 声明变量 C ?在方法定义局部变量在该方法被执行时创建 D 局部变量在使用前...
  • 是用户定义类型,对象(如变量)是类的实例。本章介绍面向对象编程和设计。对象声明描述是存 储在对象中的信息以及可对对象执行操作(方法)。对象某些组成部分对于外界来说是可见(公有部 分),而某些...
  • 是用户定义类型,对象(如变量)是类的实例。本章介绍面向对象编程和设计。对象声明描述是存 储在对象中的信息以及可对对象执行操作(方法)。对象某些组成部分对于外界来说是可见(公有部 分),而某些...
  • 是用户定义类型,对象(如变量)是类的实例。本章介绍面向对象编程和设计。对象声明描述是存 储在对象中的信息以及可对对象执行操作(方法)。对象某些组成部分对于外界来说是可见(公有部 分),而某些...
  • 是用户定义类型,对象(如变量)是类的实例。本章介绍面向对象编程和设计。对象声明描述是存 储在对象中的信息以及可对对象执行操作(方法)。对象某些组成部分对于外界来说是可见(公有部 分),而某些...
  • 每日10道JAVA题(20180608)

    千次阅读 2018-06-08 14:09:44
    局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块C.使用别的的方法仅仅需要引用方法的名字即可D.只要没有定义不带参数的构造函数,JVM都会为生成一个默认构造函数2.在使用super 和this...
  • C++ primer 中文第三版

    2008-11-09 01:37:38
    12.1.3 关于类定义更多内容 12.1.4 类声明与类定义 12.1.5 类对象 12.2 隐含this指针 12.3 类作用域 12.4 构造函数 12.4.1 构造函数初始化列表 12.4.2 默认实参与构造函数 12.4.3 默认构造函数 12.4.4 隐式类-...
  • 1、下面关于变量及其作用范围的陈述哪个是不对?( B )A.实例变量是类的成员变量。B.实例变量用关键字static声明。//Static 声明变量C.在方法定义局部变量在该方法被执行时创建。D.局部变量在使用前...
  • 12.1.3 关于类定义更多内容 372 12.1.4 类声明与类定义 374 12.1.5 类对象 375 12.2 隐含this指针 376 12.3 类作用域 380 类作用中的名字查找 382 12.4 构造函数 385 12.4.1 构造函数初始化式 387 12.4.2 默认...
  • 一、选择题1、下面关于变量及其作用范围的陈述哪个是不对?(B )A.实例变量是类的成员变量。B.实例变量用关键字static声明。C.在方法定义局部变量在该方法被执行时创建。D.局部变量在使用前必须被初始化。2...
  • 一、选择题1、下面关于变量及其作用范围的陈述哪个是不对?(B )A.实例变量是类的成员变量。B.实例变量用关键字static声明。C.在方法定义局部变量在该方法被执行时创建。D.局部变量在使用前必须被初始化。2...
  • 面试3

    千次阅读 2013-09-05 11:30:26
    1、下面关于变量及其作用范围的陈述哪个是不对?(  ) A.实例变量是类的成员变量。 B.实例变量用关键字static声明。 C.在方法定义局部变量在该方法被执行时创建。 D.局部变量在使用前必须被初始化。...
  • 对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个 Point。 例子...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

关于类中成员变量的作用范围