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的用法,有不当之处,请大家指正。

Java中static的用法的更多相关文章

  1. Java中static的用法,初始化块

    使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...

  2. Java中static的用法解析

    知识点1.static关键字a.可以修饰变量,方法,代码块b.修饰的变量和方法可以使用类名.变量名/类名.方法名调用c.static修饰的资源为静态资源,在类加载的时候执行d.在静态方法中只能调用静态 ...

  3. 【转】Java中static关键字用法总结

    1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...

  4. 【java_需阅读】Java中static关键字用法总结

    1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...

  5. Java中static关键字用法总结

      1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · ...

  6. Java类中static的用法

    关于Java中static的使用有以下四种情况: 1.静态成员变量         被static修饰的成员变量,叫静态成员变量或类变量:没有被static修饰的变量,叫实例变量. 两者的区别是:  ...

  7. java中this的用法?

    2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...

  8. 转:十八、java中this的用法

    http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...

  9. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

随机推荐

  1. vs2008破解方法

    前提条件:测试操作系统WIN7 1,解压缩镜像文件 2,找到文件:Setup\setup.sdb,用记事本打开: 3,找到以下项: [Product Key]XPWKC7X98VKQDGM3QWYVG ...

  2. freemaker转word xml注意事项

    java类字符串变量如果含有以下2种字符: &和  <,必须转义否则转化将失败. 其中: &替换成 & <替换成 < 因为一些怪字符数据库存储时已转义了,从数 ...

  3. s:iterator标签的使用

    1.在说明s:iterator标签的使用前,先了解下struts2中的Value Stack. 这里参考了webwork中对Value Stack的描述,由于struts2是在webwork的基础上进 ...

  4. 获取Request请求的路径信息

    从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String p ...

  5. loadrunner中lr_log_message和lr_output_message 的区别

    LoadRunner中lr_output_message和lr_log_message(1)在vgen中,我们必须写输出函数输出信息,将我们所想要了解的信息用函数输出,主要有这么几个函数输出信息: l ...

  6. Swift相关图书推荐

    Swift与Cocoa框架开发 作      者 [澳] 曼宁(Jonathon Manning),巴特菲尔德-艾迪生(Paris Buttfield 出 版 社 人民邮电出版社 出版时间 2015- ...

  7. WebGoat学习——跨站请求伪造(Cross Site Request Forgery (CSRF))

    跨站请求伪造(Cross Site Request Forgery (CSRF)) 跨站请求伪造(Cross Site Request Forgery (CSRF))也被称为:one click at ...

  8. Windows平台分布式架构-负载均衡(高并发)

    缘由 单纯想在winodows平台部署分布式程序,微软在IIS扩展的介绍中有涉及到Application Request Router + Web Farm + Url Rewriter可以实现分布式 ...

  9. 性能测试-ApacheBench

    基本简介 ApacheBench 是一个指令列程式,专门用来执行网站服务器的运行效能,特别是针对Apache 网站服务器.这原本是用来检测 Apache 网站服务器能够提供的效能,特别是可以看出Apa ...

  10. dom 输入文字模拟滚动

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...