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的用法,有不当之处,请大家指正。
Java中static的用法的更多相关文章
- Java中static的用法,初始化块
使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...
- Java中static的用法解析
知识点1.static关键字a.可以修饰变量,方法,代码块b.修饰的变量和方法可以使用类名.变量名/类名.方法名调用c.static修饰的资源为静态资源,在类加载的时候执行d.在静态方法中只能调用静态 ...
- 【转】Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
- 【java_需阅读】Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
- Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · ...
- Java类中static的用法
关于Java中static的使用有以下四种情况: 1.静态成员变量 被static修饰的成员变量,叫静态成员变量或类变量:没有被static修饰的变量,叫实例变量. 两者的区别是: ...
- java中this的用法?
2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...
- 转:十八、java中this的用法
http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
随机推荐
- 【转】使用Xcode和Instruments调试解决iOS内存泄露
原文网址:http://blog.csdn.net/totogo2010/article/details/8233565 虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄 ...
- python-socket.error[10054]:对象的复制
1.socket.error[10054],对方强制关闭了连接 在用socket.recvfrom时,若事先没有bind时, 先使用socket.sendto,socket.recvfrom 有时会出 ...
- delete之后千万要记得将指针置空,即勿重复delete!!!
下面这段代码有什么问题吗?(Arduino上运行) class C{ public: C(){ ptr = ]; } ~C(){ if(ptr!=NULL)delete [] ptr; } void ...
- 深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制
深入浅出ghostbuster剖析NodeJS与PhantomJS的通讯机制 蔡建良 2013-11-14 一. 让我们开始吧 通过命令行来执行 1) 进行命令窗口: cmd 2) 进入resourc ...
- suse linux中apache+php服务器安装
主站下载源码 tar zxvf httpd-2.2.4.tar.bz2cd httpd-2.2.4 ./configure --prefix=/usr/local/apache --sysconfdi ...
- 5、NFC概述
什么是NFC NFC(Near Field Communication,近场通信),是一种数据传输技术.但与Wi-Fi.蓝牙.红外线等数据传输技术的一个主要差异就是有效距离一般不能超过4厘米. NFC ...
- hdu 1527 取石子游戏(Wythoff Game)
题意:Wythoff Game 思路:Wythoff Game #include<iostream> #include<stdio.h> #include<math.h& ...
- IOS播放音乐和音效
1.播放音效 1.1 首先获取到音效文件路径 NSString *path = [[NSBundle mainBundle] pathForResource:soundFileName ofType: ...
- 200 OK (from cache) 与 304 Not Modified
解释: 200 OK (from cache) 是浏览器没有跟服务器确认,直接用了浏览器缓存: 304 Not Modified 是浏览器和服务器多确认了一次缓存有效性,再用的缓存. 触发区别: 2 ...
- JQuery Mobile移动Web应用开发(1): UI开发工具RID介绍
工欲善其事,必先利其器. UI工具可以提高我们开发界面的效率,下面对几款工具做个对比: 1. Codiqa,在JQuery Mobile主页能看到这款工具,看到网上这么多人吹捧这个工具,不过是收费的. ...