zoukankan      html  css  js  c++  java
  • static关键字

    概述

    static关键字,可以修饰成员变量,和成员方法。被修饰的成员是【属于类】的,不单单是属于某个对象的,也就是,既然是属于类的,那就不需要创建对象来调用类中的成员信息。

    定义和使用格式

    类变量

    • 当成员变量被static修饰,该变量就称为【类变量】。该类的每一个对象都【共享】同一个类变量的值。任何对象都可以更改类变量的值。类变量可以不通过创建对象的方式进行操作,通过类也可以操作。
    • 定义格式
      static 数据类型 变量名;
      如;static int number;
      //调用格式:
      //类名.变量名=值;
      

    静态方法

    • 当成员方法一旦被static关键字修饰时,该方法称为【类方法】。类方法一般是通过类名直接调用,而不是单独创建对象来调用,调用方式很简单。习惯称为【静态方法】。

    • 定义格式:

      修饰符 static 返回值类型 方法名(参数列表){
      	//代码块
      }
      //调用格式
      //类名.方法名
      
    • 静态方法的注意事项:

      • 静态方法可以直接访问类变量和静态方法

      • 静态方法【不能直接访问】成员变量和成员方法。反之,成员方法可以【直接访问】类变量和静态方法。

      • 静态方法中不能使用this关键字

    • 调用格式

      静态方建议通过类来调用,但是也可以通过对象来调用,会出警告信息,不建议使用对象来调用

      //访问类变量
      类名.变量名;
      //访问静态方法
      类名.静态方法(参数);
      //备注;这些不能直接访问的成员信息,可以间接的通过实例化对象来调用。
      
    • static修饰的内容

      • 随着类的加载而加载,而且只会加载一次。
      • 存储于一块固定的内存区域,在静态域(静态区),可以被类直接调用。
      • 它优先于对象存在,所以可以被类的所有对象所共享。

    静态代码块

    静态代码块:定义在成员位置,被static修饰的代码快{}

    • 位置 :类中方法外
    • 执行:随着类的加载而加载,而且只会执行一次,优先于main方法和构造方法加载
    public class ClassStatic{
        static{
    		//执行语句 多条语句
        }
        public static void main(String[] args){
            //static{}//错误的写法
        }
    }
    //static可以修饰成员变量,成员方法,代码快。在使用过程中,如果你不行在创建对象的情况下
    //,去调用成员变量,成员方法,可以定义静态的。对于静态代码快来说,通常是对类中的成员信息初始化。
    

    练习

    • 查看一下运行结果为什么
    class Father {
        static {
            System.out.println("父类静态代码块");
        }
    
        {
            System.out.println("父类非静态代码块");
        }
    
        public Father() {
            System.out.println("父类构造函数");
        }
    }
    
    class Son extends Father {
        static {
            System.out.println("子类静态代码块");
        }
    
        {
            System.out.println("子类非静态代码块");
        }
    
        public Son() {
            System.out.println("子类构造函数");
        }
    
        public static void main(String[] args) {
            Son son = new Son();
        }
    }
    
    	父类静态代码块
        子类静态代码块
        父类非静态代码块
        父类构造函数
        子类非静态代码块
        子类构造函数 
    
    • 补充一下完整版的,执行顺序从左到右:
      父类静态代码块 ->子类静态代码块 ->父类非静态代码块 -> 父类构造函数 -> 子类非静态代码块 -> 子类构造函数。
  • 相关阅读:
    WinForm------GridControl添加底部合计框
    WinForm------如何将GridControl数据导出到Excel
    C#------DateTime自定义格式
    WinForm------RepositoryItemCheckEdit属性介绍
    C#之设计模式之六大原则(转载)
    C#委托的介绍(delegate、Action、Func、predicate)
    ·c#之Thread实现暂停继续(转)
    支持取消操作和暂停操作的Backgroundworker
    C#之Winform跨线程访问控件
    C#在使用Assembly加载程序集时失败
  • 原文地址:https://www.cnblogs.com/zk2020/p/14015564.html
Copyright © 2011-2022 走看看