第七十二课.static关键字-1

静态:static

用法:是一个修饰符,用于修饰成员(成员变量,成员函数),

  当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调:类名.静态成员

    类名.静态成员

存在:方法区,共享区,数据区(非堆内存、栈内存的另一个存储区),Static 块仅在该类被加载时执行一次。

 

static特点:

1,随着类的加载而加载,也就是说静态会随着类的消失而消失,说明他的生命周期最长

2,优先于对象的存在。(静态先存在,对象后存在。)

3,被所有对象所共享

4,可以直接被类名调用

  由于静态static不依赖于任何对象就可以进行访问,因此对于静态来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

内部类中不能存在static修饰的成员,因为static随着类加载产生,内部类依附于宿主类,系统加载:宿主类-->静态-->内部类,而内部类的静态是随着内部类加载产生,与加载类就加载static矛盾,所以内部类中不能存在static修饰

 

例:

package com.xuenixiang.web;

 

public class Vip {

         public int vip1;

         public static int  vip2;

 

}

package com.xuenixiang.web;

 

public class ChongZhiVip {

 

         public static void main(String[] args) {

                  // TODO 自动生成的方法存根

                  com.xuenixiang.web.Vip xnx1=new com.xuenixiang.web.Vip();

                  xnx1.vip1=100;

                  xnx1.vip2=100;

                  com.xuenixiang.web.Vip xnx2=new com.xuenixiang.web.Vip();

                  xnx2.vip1=200;

                  xnx2.vip2=200;

                  System.out.println("对象xnx1的成员属性vip1的值为:"+xnx1.vip1);

                  System.out.println("对象xnx1的成员属性vip2的值为:"+xnx1.vip2);

                  System.out.println("对象xnx2的成员属性vip1的值为:"+xnx2.vip1);

                  System.out.println("对象xnx2的成员属性vip2的值为:"+xnx2.vip2);

 

         }

 

}

 

运行结果:

 

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

 

如果引用了对象,编译器会提示,但不会报错,如下图所示:

 

所以程序可以改进一下:

 

package com.xuenixiang.web;

 

public class ChongZhiVip {

 

         public static void main(String[] args) {

                  // TODO 自动生成的方法存根

                  com.xuenixiang.web.Vip xnx1=new com.xuenixiang.web.Vip();

                  xnx1.vip1=100;

                  Vip.vip2=100;

                  com.xuenixiang.web.Vip xnx2=new com.xuenixiang.web.Vip();

                  xnx2.vip1=200;

                  Vip.vip2=200;

                  System.out.println("对象xnx1的成员属性vip1的值为:"+xnx1.vip1);

                  System.out.println("对象xnx1的成员属性vip2的值为:"+Vip.vip2);

                  System.out.println("对象xnx2的成员属性vip1的值为:"+xnx2.vip1);

                  System.out.println("对象xnx2的成员属性vip2的值为:"+Vip.vip2);

 

         }

}

这样就完美不报错了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuenixiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值