static

static关键字概述

 
 
static关键字的概述
    * 是一个修饰符。
    * 一般用来修饰成员变量,成员方法以及代码块
    * static修饰的成员变量和成员方法不再属于对象,而是属于类。可以被该类的所有对象共享。
成员变量的分类
    * 静态成员变量或类变量:被static修饰的成员变量
    * 非静态成员变量或实例变量:没被static修饰的成员变量
静态成员变量和非静态成员变量的区别
    * 语法的区别
        * 静态成员变量:被static修饰的成员变量
        * 非静态成员变量:没被static修饰的成员变量
    * 数量的区别
        * 静态成员变量:在内存中只有一份,被类的所有对象共享。
        * 非静态成员变量:每创建一个对象都会为该成员变量分配内存空间,每一个对象都有自己的一份,互补干扰。
    * 访问方式的区别
        * 静态成员变量:可以通过对象名访问,也可以通过类名访问(强烈推荐使用)
        * 非静态成员变量:只能通过对象名方法。
    * 生命周期的区别
        * 静态成员变量:跟随类的加载而创建并初始化,跟随类的销毁而销毁。
        * 非静态成员变量:跟随对象的创建而创建并初始化,跟随对象的销毁而销毁。
什么时候可以使用static修饰成员变量?
    * 当该成员变量的值需要在该类的所有对象之间共享时,则应该定义为静态成员变量。
 
静态方法和非静态方法的区别
     * 静态方法:可以通过对象名访问,可以通过类名调用(推荐使用)
     * 非静态方法:只能通过对象名调用
 
静态方法的注意事项
     * 静态方法中不能使用this和super关键字。
     * 静态方法中不能访问非静态成员:非静态成员变量和非静态成员方法
     * 非静态方法中可以访问静态方法:静态成员变量和静态成员方法。
 
什么时候应该将该方法定义为静态方法?
     * 当该方法内部不需要访问任何的非静态成员:非静态成员变量和非静态成员方法,就可以考虑定义为静态方法。
     * 定义工具类时,工具类中的方法一般都是静态方法。

你可能感兴趣的:(Java笔记,static)