• Java中static的用法


    static静态,作为修饰符,最初是由c引入,一开始static表示退出一个块后依然存在的局部变量。随后,static表示不能被其他文件访问的全局变量和函数。到了C++和java,static表示属于类且不属于类对象的变量和函数。

    从具体用法来看,主要用到5个方面。

    一、静态域。

    static修饰类的域(字段,成员变量),被static修饰的域在类中只有一个,它属于类,也称为类域。它只能被类操作,不能由对象操作。比如

    pubic class Employee

    {

      private static int nextId=1;

      private int id;

    }

    这里nextId是静态域,id就是实例域。nextId在Employee这个类中只有一份,所有Employee的对象共享这个静态域,即使没有对象,nextId依然存在。而实例域id,不同的对象可以都拥有一份id,id属于对象,不属于类。操作的时候,用类操作静态域,也就是Employee.nexdId。用对象操作实例域,也就是tom.id(tom是Employee的一个对象)。

    对于静态域而言,一般静态变量用的较少,静态常量用的比较多。比较典型的就是数学中的PI。

    public class Math

    {

      public static final double PI=3.14159265358979323846;

    }

    程序中通过Math.PI来获取这个常量。

    二、静态方法

    static修饰的方法就是静态方法,静态方法是属于类的。比较典型的还是Math里面的方法,如pow(x,a),表示x的a次幂,调用的时候直接写Math.pow(x,a)。

    静态方法不能操作对象,也不能访问实例域,只能访问自身所在类的静态域。比如

    public static int getNextId()

    {

      return nextId;//返回静态域

    }

    三、静态代码块

    在类的内部,用static修饰的一个代码块,也称为静态初始化块。主要用于对类内部的静态域进行初始化。它在第一次使用类的时候执行,只执行一次,而且在构造函数之前执行。比如,连接数据库之前,需要对连接数据库用到的字符串初始化,并且只加载一次驱动,就把这些都放到静态代码块中。示例代码如下:(摘了能够说明问题的部分代码)

    static

    {

    //需加载驱动的名字 

    drivername=prop.getProperty("drivername");

    //数据库地址

    dburl=prop.getProperty("dburl");

    //数据库用户名

    dbusername=prop.getProperty("dbusername");

    //数据库密码

    dbpassword=prop.getProperty("dbpassword");              

    //加载驱动,驱动只需要加载一次

    Class.forName(drivername);

    }

    四、静态导入

    import导入类的时候,如果加上static,就可以导入静态域和静态方法。

    在源文件顶部加入这样一行代码:

    import static java.lang.Math.*;

    我们在后面的程序中就可以直接使用Math的静态域和静态方法了。

    比如double i=pow(PI,3);

    这样代码比没有静态导入之前的代码

    double b=Math.pow(Math.PI, 3);

    要清晰了很多,也简洁了不少,更易于理解。

    五、静态内部类

    在内部类的前面加上static修饰,就是静态内部类。这样使用,只是把这个类隐藏在另外一个类的内部,不需要引用外围类对象。静态内部类的对象除了不能引用外围类的对象外,和其他的内部类是完全一样的。

    以上是我阅读Java核心技术 卷I时,结合学习其它内容,个人总结的static的用法,有不当之处,请大家指正。

  • 相关阅读:
    跟着我学习-python-01-流程控制语句
    跟着我学习-python-01-用户交互
    跟着我学习-python-02-while循环
    基于Centos7.6上Ambari2.7.4+HDP3.1.4离线安装
    TDH(Transwarp Data Hub)社区版安装教程
    跟我学习日常写的shell脚本-设置系统selinux
    [Linux]常用命令“ll”失效或命令未找到
    NPOI
    Linq&lamda相关
    接口相关
  • 原文地址:https://www.cnblogs.com/coodream2009/p/5415451.html
Copyright © 2020-2023  润新知