静态static修饰符

1.static修饰函数的作用:


该函数没有访问过对象中的属性(对象的成员变量)时,可以通过静态修饰,将该函数放至在方法区中,这样不比在每一次建立对象时开辟空间给该函数,减少不必要的内存消耗;

以下通过类名.成员方法名的方式,可以直接调用该方法,前提是sleep方法被static 修饰。
public class Demo 
{
     public static void main(String[] args) 
    {
      Person.sleep();   
     }
}
class Person
{
     public static void sleep()
     {
      System.out.println("haha");
     }
}



2.特点:
  • 被静态修饰的成员,可以直接被类名所调用
  • 静态成员变量优先于对象存在(注意这里不是说有限于类)
  • 随着类的加载而加载,类的消失而消失,所以静态成员生命周期很长


3.内存中的体现:




4.注意事项:
  • 静态方法只能访问静态成员,不能访问非静态成员,这是静态方法的访问局限性;
  • 静态方法不能出现this或者super关键字;(可以这样推理,既然静态的特点说了,静态成员优先于对象存在,那么这个时候的this是没有指向的对象的,因为还没创建)
  • 主函数是静态的;

5.什么时候使用静态修饰呢?
  • 成员变量:当成员的属性在所有的对象中都一样时,直接用静态修饰;
  • 成员函数:如果成员函数没有访问过对象中的属性数据时,改函数则是静态的;

6.静态变量和成员变量的区别?
名称(所属):
静态变量所属于类,也称为 类变量。
成员变量所属于对象,也称为 实例变量。
内存位置:
静态变量存储于方法区中的静态区中。
成员变量存储于堆内存的对象中。
加载先后:
静态变量随着类的加载而加载,随着类的消失而消失。
成员变量随着对象的加载而加载,随着对象的消失而消失。

7.静态代码块:
class demo
{    
              static  {    system.out.println("hello")   }  
}                             
   它的作用是类加载中而加载此代码块,是初始化类,而且只执行一次, 而静态修饰构造函数,是初始化对象;


8.调用成员方法的方式有两种:
对象.方法名();   
类名.方法名();  //这种要求对应方法被static修饰




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值