Loading

【Java基础】static关键字

static关键字

场景

创建类的时候,就是在描述类的对象的外观和行为,除非new创建类的对象,否则没有获得任何对象。执行new创建对象,数据存储空间(new对象在堆中)才会分配,其方法才能供外面调用。

但是,两种情况上述方法无法解决

  • 只想为某个特定域分配单一存储空间,而不考虑创建对象(static属于静态变量,位于方法区中
  • 希望某个方法不与包含他的那个类的任何实例对象关联在一起,也就是没有对象也能调用(static可以使用类名调用

示例

public class Demo {
    int id;
    static int sid;
    public void a() {
        System.out.println ("---------a");
        System.out.println (sid);
        System.out.println (id);
    }

    //1.static和public 是修饰符,并列的没有先后顺序,先写谁都可以
    static public void b() {          //sid 是先于对象加载的
      //  a();//3.在静态方法中不能访问非静态方法
        System.out.println ("---------b");
        System.out.println (sid);
       // System.out.println (id);//2.在静态方法中不能访问非静态的属性
       // System.out.println (this.id);//4.在静态方法中不能使用this关键字
    }

    public static void main(String[] args) {
        Demo d = new Demo();
       // Demo.a();//5.非静态的方法可以用对象名.方法名去调用,不能用类.方法名
        d.a ();

        Demo.b ();//6.静态的方法可以用对象名.方法;类名.方法名(推荐)去调用
        d.b ();
        
        b();//在同一个类中可以直接调用
    }
}

总结

虽然static作用于某个字段时,肯定会改变数据创建的方式(因为一个static 字段对每个类来说只有一份存储空间,而非static字段则是每个对象有一个储存空间)static方法重要用法是在不创建任何对象的前提下就可以使用它。

  • 以上内容是基于——《java编程思想》总结的,学习加深在进行补充 。
posted @ 2020-08-19 22:57  笑忘舒  阅读(75)  评论(0编辑  收藏  举报