精华内容
下载资源
问答
  • 成员变量与局部变量的区别

    成员变量

    1、什么是成员变量

    成员变量是在类范围内定义的变量
    类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;而实例变量则从该类的实例被创建起开始存在,直到系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。因此可以把类变量和实例变量统称为成员变量
    其中类变量可以理解为类成员变量,它作为类本身的一个成员,与类本身共存亡;实例变量则可以理解为实例成员变量,它作为实例的一个成员与实例共存亡。
    只要类存在,类就可以访问类变量 类.类变量
    只要实例存在,实例就可以访问实例变量 实例.实例变量

    例子

    public class Car {
        private String name;//成员变量 在类范围内定义的变量
        private int speed;//成员变量 在类范围内定义的变量
    
        void run(){
            System.out.println(name+"每小时跑"+speed+"km");
        }
    
        public Car() {
        }
    
        public Car(String name, int speed) {
            this.name = name;
            this.speed = speed;
        }
    
        public static void main(String[] args) {
            Car car = new Car();
            car.name = "宝马";
            car.speed = 130;
            car.run();
        }
    }
    

    2、成员变量内存示意图

    在这里插入图片描述
    变量存在于栈中,new出来的实体存在于堆中
    当执行Car car = new Car();时,会在栈内存中开辟一块空间,存放car;同时,会在堆内存中开辟一块空间,这个空间就是new Car(),这块大空间中会有两个变量name和speed,堆内存中的每个实体都有一个内存地址,假设内存地址为@3b41a295,将这个地址赋给car,此时car就指向了new出来的对象,或者说car就引用了这个对象

    局部变量

    1、什么是局部变量

    局部变量是在一个方法或语句内定义的变量,三种形式:
    1、形参:在定义方法签名时定义的变量,形参的作用域在整个方法中都有效
    2、方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时失效
    3、代码块局部变量:这个局部变量的作用域从定义该变量的地方生效,到该代码结束时失效。

    例子

    public static void main(String[] args){
    	for(int i = 0 ; i < 10; i++){
    		//i为局部变量 在一个方法或语句内定义的变量
    		System.out.println("第"+i+"次循环,i的值为"+i);
    	}
    	System.out.println("执行完毕");
    }
    

    2、局部变量内存示意图

    在这里插入图片描述
    当执行for(int i = 0 ; i < 10; i++)时,会在栈内存中开辟一块空间,存放局部变量i,当for语句执行完毕时,会释放局部变量i所在的空间

    成员变量与局部变量的区别

    1、作用范围

    成员变量作用于整个类中;局部变量作用于函数或语句中

    2、在内存中的位置不同

    成员变量存在于堆内存中,因为对象的存在才在内存中存在;而局部变量存在于栈内存中,当方法或语句执行完毕时让出内存,让其他方法或语句来使用内存。二者的运行机制存在较大差异

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,488
精华内容 595
关键字:

成员变量与局部变量的区别