实例变量和类变量的区别

1.从语法区别上说:变量声明时前面加了static关键字的变量为静态变量又称为类变量,反之变量声明时没加static修饰的变量为实例变量。

2.变量的隶属:静态变量是该类的所有对象所共享的即该变量属于该类,而不属于某个对象,而实例变量则是属于特定的对象的。

3.变量何时存在:静态成员在类的对象初始化前可以通过类名访问,即静态变量在new对象之前就已经存在内存中,类的静态成员在类加载(即第一次创建一个类)的时候分配空间,静态成员贯穿整个生命周期==》如:main方法为static的。                              而实例变量要在创建对象时才分配内存。

4.静态方法:

1)静态方法中只能访问静态成员(原因:若要被访问,首先得在内存中已分配空间)

2)非静态方法中可以访问类的静态成员

3)静态方法中没有this引用

5.静态块

static{}主要是用于给类的静态化成员赋值的

{  }代码块在每次实例化对象前执行,在调用构造方法前执行

6.执行顺序:

1)先执行代码块再执行构造方法

2)先自动执行静态块,再执行静态方法(需要手动调用)

7.静态变量和实例变量,实例:

public class TestIns{
    public static void main(String[] args) {
        for(int i = 0;i<10;i++){
            new Son();
        }
    }

}
class Son{
    int var=0;
    static int staticVar =0;
    Son(){
        var++;
        staticVar++;
        System.out.println(var+"=============="+staticVar);
    }
}

结果:

1==============1
1==============2
1==============3
1==============4
1==============5
1==============6
1==============7
1==============8
1==============9
1==============10

8.静态块代码块的执行

public class TestIns{
    public static void main(String[] args) {
        new Son();
        Son.test();
    }

}
class Son{
    int var=0;
    static int staticVar ;
    static{
        staticVar=3;
        System.out.println("我是静态块,给静态变量赋值了");
    }
    Son(){
        System.out.println("我是       构造方法         被执行了");
    }
    {
        System.out.println("我是    代码块       被执行了");
    }
    static void test(){
        System.out.println("我是     静态方法");
    }
}


结果:

我是静态块,给静态变量赋值了
我是    代码块       被执行了
我是       构造方法         被执行了
我是     静态方法

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

类变量可以通过类名直接调用,类名.静态变量名

实例变量要通过,对象.变量名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值