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如何导入本地项目

  • 相关阅读:
    (原创)(二)作为测试负责人测试过程监控中关注的度量数据
    国产免费非开源测试管理软件MYPM 零配置安装过程
    (原创)存在于大多数小公司的测试管理问题
    抨击评价音频播放软件音质的穆伦
    关于C#交互式窗口(C# Shell REPL Interpreter Interactive)
    网上车管所系统更新日志
    SharpDevelop 用来临时在服务器上写Web服务很不错。
    弄到现在才知道网页没有combobox,弄网上的服务器控件不方便,自己用textbox+dropdownlist用CSS组合起一个简单的combobox效果。
    为什么国内的企业不收购WebOS、塞班、Meego?
    未能初始化 AppDomain:/LM/W3SVC/1/Root 服务应用程序不可用
  • 原文地址:https://www.cnblogs.com/occlive/p/13366650.html
Copyright © 2011-2022 走看看