zoukankan      html  css  js  c++  java
  • Java基础——static修饰符

    static

    static在多种计算机语言在常有用到
    static在java语言中作为修饰符也有着重要的地位

    引入

    • static修饰属性,可生成静态属性
    • static修饰方法,可生成静态方法
    • static修饰代码块,可生成静态代码块
    • static修饰类,可生成静态类

    静态属性

    //权限修饰符 static 数据类型 名称;
    public static int num;
    

    各个对象数据进行沟通,实现数据的共享

    特点

    • static声明的属性为类属性
    • 创建对象时,不产生static属性的拷贝
    • 类所有实例共享一个static属性
    • 类装载时,只分配一块存储空间,所以类的对象进行操作
    • 静态属性值一旦改变,所有类的对象均共享改变

    访问方式

    由特点可知:

    1. 静态属性不属于任何实例,属于类对象
    2. 所以该类的实例都可进行操作静态属性
    • 类名.公有静态属性名
    • 对象名.公有静态属性名
    //Demo为含有公有静态属性num的类
    Demo d = new Demo();
    //第一种方法
    Demo.num = 1;
    //第二种方法
    d.num = 2;
    

    静态方法

    //权限修饰符 static 返回值类型 方法名(参数){
    //      方法体;
    //}
    private static int num = 1;
    public static int getNum(){
          return num;
    }
    

    java的三大特性之一:封装
    为了体现java的特性,所有类的属性一般设为私有(private),
    为了访问私有的静态成员,需要静态方法来实现该功能。

    特点

    • 不调用不执行。
    • static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的(abstract)

    访问方式

    • 类名.公有静态方法名(参数);
    • 对象名.公有静态方法名(参数);
    //Demo为含有私有静态属性num、公有静态方法getNum的类
    Demo d = new Demo();
    //第一种方法,用的最多
    Demo.getNum();
    //第二种方法
    d.getNum();
    

    使用规则

    1. 在静态方法中,只能直接调用其他static类型的方法
    2. 在静态方法中,只能直接访问static类型的属性
    3. 在静态方法中,不能使用thissuper

    静态代码块

    静态代码块主要是初始化类中的静态变量。

    static{
          //代码块
    }
    

    特点

    仅在类被加载时执行一次。

    继承顺序

    //父类
    public class Parent{
          static{
                //代码块1
          }
          Parent(){
                //代码2
          }
    }
    
    //子类
    public class Son extends Parent{
          static{
                //代码块3
          }
          Son(){
                //代码4
          }
    }
    
    //执行顺序
    //代码1
    //代码3
    //代码2
    //代码4
    

    当一个类继承父类,父类和该类中有静态代码块
    在该类加载时,代码的执行顺序为:

    1. 父类的静态代码块
    2. 子类的静态代码块
    3. 父类的构造方法
    4. 子类的构造方法

    静态与非静态顺序

    1. 静态属性/静态代码块
    2. 非静态属性/非静态代码块
    3. 构造方法

    静态类

    普通类不允许声明为静态,内部类可以
    声明为静态的内部类可以直接作为一个普通类来使用,而不需实例化一个外部类。

    final

    final和static一起使用,修饰成员变量和方法,可作为全局常量

    • static final 常量,一旦赋值不可修改,可通过类名访问

    • static final 方法, 不可覆盖,可通过类名访问


    博客相关java项目:查看Github项目
    对应github项目:Static
    导入项目的方法: Java基础——Java如何导入本地项目

  • 相关阅读:
    HttpServletRequest字符集问题
    原码反码补码
    无符号1byte转int
    初识spark的MLP模型
    冗余系统必要性
    shiro的rememberMe不生效
    阅读笔记-异常
    优雅的处理异常
    使用Maven搭建SpringMVC
    Jmeter发送soap请求
  • 原文地址:https://www.cnblogs.com/occlive/p/13366650.html
Copyright © 2011-2022 走看看