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. Java自动装箱拆箱

    一.装箱.拆箱定义 如果一个int型量被传递到需要一个Integer对象的地方,那么,编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱.而如果一个Integer对象被放到需要in ...

  2. unity, 颜色随高度渐变shader

    一,颜色随世界空间高度渐变. Shader "Custom/heightGradual_worldSpace" {    Properties {        _Color (& ...

  3. mysql 用户名密码登陆不上

    问题1:刚安装完mysql,设置了用户名密码root,登陆OK的,后来再连怎么也连不上了 操作步骤: 输入:mysql -uroot -proot 提示:ERROR 1045 (28000): Acc ...

  4. 可进行JavaScript代码测试与调试的12个网站

    概述:JavaScript是网站前端开发最为重要的一门编程语言,本文收集了能够在线测试与调试JavaScript代码的12个网站 1.JS Bin JS bin是一个为JavaScript和CSS爱好 ...

  5. dzzoffice教程、文档、开发手册等内容地址

    dzzoffice教程.文档.开发手册等内容全部都存放在DzzOffice开发者社区的文集中.搜索引擎收录不到DzzOffice中的应用内容,这里将文集地址提供在这里. 地址:http://dev.d ...

  6. 一些JS周边工具

    Visual Studio JS 辅助插件 JScript Editor Extensions 功能: 1.     代码块折叠 2.     方法参数智能提示 3.     代码块Outlining ...

  7. jQuery文本框(input textare)事件绑定方法教程

    jquery 的事件绑定已经用on替换了原来的bind,接下来为大家分享下bind的使用方法及input textare事件.目前1.7以上,jquery?的事件绑定已经用on替换了原来的bind,接 ...

  8. Oracle 取两个表中数据的交集并集差异集合

    Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...

  9. Basic Sorting Algorithms

    *稳定指原本数列中相同的元素的相对前后位置在排序后不会被打乱 快速排序(n*lgn 不稳定):数组中随机选取一个数x(这里选择最后一个),将数组按比x大的和x小的分成两部分,再对剩余两部分重复这个算法 ...

  10. Mysql报错:1172 - Result consisted of more than one row

    执行mysql函数时报错:1172 - Result consisted of more than one row 函数语句中select into语句中WHERE account = userNam ...