Java基础---static(静态) + 静态代码块

static(静态):     

  • “static”关键字表明一个成员变量或成员方法可以在没有所属的类的实例变量的情况下被访问
  • static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编 译时静态绑定的。

修饰成员变量:

    把一个数据共享,该数据使用static修饰即可。
    格式 static int age= 18   那么age在内存中只存在一份(节省空间)

修饰成员函数:

   静态成员函数的访问方式:
                方式一:使用对象进行访问。   格式: 对象.函数名
                方式二:使用类名进行访问。   格式: 类名.函数名。

  静态成员函数要注意:

  1. 静态函数可以使用对象或者类名进行调用,非静态函数(不加static修饰的函数)只能使用对象进行调用。

  2. 静态函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
      原因:静态函数可以使用类名调用,而这时候对象可能还没有存在内存中,这时候非                   静态的数据也就不存在内存中。

  3. 非静态函数可以直接访问静态以及非静态成员。
      原因:非静态函数必须要由对象调用,如果对象存在了,静态数据以及非静态数据早                   就存在内存中。
 

  4. 静态函数不能出现this与super两个关键字。
      原因:因为静态函数可以使用类名直接调用,而这时可能还没有对象存在,this又要        代表当前对象。
    

         以上原因:存在的问题,搞清谁先存在。 (内存中先有静态内容,后有的非静态)

 5.什么时候使用static修饰一个函数呢?
        情况一:如果一个函数没有直接访问非静态的成员(成员函数和成员变量);
        情况二:当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static;  
        情况三:不需要创建对象就可以用的函数。

区别

静态成员变量

非静态成员变量

数量

(1份)静态成员变量只会在方法中维护一份数据。

(n份)非静态成员变量是在每个对象中都维护一份数据

访问方式

对象名和类名

只能使用对象访问

存储位置

方法区

堆内存

生命周期

类文件加载存在,删除消失

对象创建存在,消失而消失

作用

共享数据给所有对象使用

描述一类事物的属性

 


静态代码块:被static修饰的代码块,共享代码,类文件建立加载就执行
          格式:  static{

                                    静态代码块代码   //优先所有执行

                       }

            随着类的加载而执行且执行一次,优先于 main方法和构造方法的执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值