【一道面试题】静态变量和实例变量的区别

恩……..这道题,我们来看一下,首先得明白,什么是静态变量,什么是实例变量!
看下面这个代码

class Demo1{
    //静态变量
    public static int a = 1;
    //实例变量
    public int b = 1;

    public Demo1(){
        a++;
        b++;
        System.out.println("静态变量: "+a+"实例变量b: "+b);
    }
}

这个demo里的a 就是静态变量,b就是实例变量,
我们在调用静态变量的时候,可以直接使用 类名.静态对象名 来调用 ,比如
Demo1.a
而实例对象使用的时候是通过 new demo().b 来调用的!
我们再来看这道面试题!
静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用,也就是说,你创建了多个对象,他们共用了一个静态变量,而实例对象是属于自己的独有的,不会被共享!
可以看看下面的代码演示

public class Test {

    public static void main(String[] args) {
        Demo1 d1 = new Demo1();
        Demo1 d2 = new Demo1();
    }

}
class Demo1{
    //静态变量
    public static int a = 1;
    //实例变量
    public int b = 1;

    public Demo1(){
        a++;
        b++;
        System.out.println("静态变量: "+a+"实例变量b: "+b);
    }
}

最后的结果为
这里写图片描述

可以看出来 静态变量是公共的,而实例对象,是自己用自己的!

猜你喜欢

转载自blog.csdn.net/u013781343/article/details/80572196