bulktree
欢迎走进有风的地方~
BlogJava
首页
新文章
新随笔
聚合
管理
posts - 38, comments - 109, trackbacks - 0
如何使用Static的变量和方法
如何使用Static的变量和方法
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。
static
成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几条限制:
1
.它们仅能调用其他的static 方法。
2
.它们只能访问static数据。
它们不能以任何方式引用this 或super(关键字super 与继承有关)。
如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块:
//
Demonstrate static variables,methods,and blocks.
class
UseStatic
{
static
int
a
=
3
;
static
int
b;
static
void
meth(
int
x)
{
System.out.println(
"
x =
"
+
x);
System.out.println(
"
a =
"
+
a);
System.out.println(
"
b =
"
+
b);
}
static
{
System.out.println(
"
Static block initialized.
"
);
b
=
a
*
4
;
}
public
static
void
main(String args[])
{
meth(
42
);
}
}
一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a
*
4
或12。然后调用main(),main() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。
注意:在一个static 方法中引用任何实例变量都是非法的。
下面是该程序的输出:
Static block initialized.
x
=
42
a
=
3
b
=
12
在定义它们的类的外面,
static
方法和变量能独立于任何对象而被使用。这样,你只要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个static方法,你可以使用下面通用的格式:
classname.method( )
这里,classname 是类的名字,在该类中定义static方法。可以看到,这种格式与通过对象引用变量调用非static方法的格式类似。一个static变量可以以同样的格式来访问——类名加点号运算符。这就是Java 如何实现全局功能和全局变量的一个控制版本。
下面是一个例子。在main() 中,static方法callme() 和static 变量b在它们的类之外被访问。
class
StaticDemo
{
static
int
a
=
42
;
static
int
b
=
99
;
static
void
callme()
{
System.out.println(
"
a =
"
+
a);
}
}
class
StaticByName
{
public
static
void
main(String args[])
{
StaticDemo.callme();
System.out.println(
"
b =
"
+
StaticDemo.b);
}
}
下面是该程序的输出:
a
=
42
b
=
99
posted on 2007-12-01 10:55
凌晨风
阅读(1889)
评论(4)
编辑
收藏
所属分类:
Java学习笔记
FeedBack:
#
re: 如何使用Static的变量和方法
2008-04-07 20:24 |
jacky_0223
明白了~ 呵呵~
回复
更多评论
#
re: 如何使用Static的变量和方法
2008-06-18 17:34 |
谢谢
说的很明白 很透彻
回复
更多评论
#
re: 如何使用Static的变量和方法
2008-09-22 10:52 |
ww
xiexie
回复
更多评论
#
re: 如何使用Static的变量和方法
2008-09-27 15:35 |
ss
很明白,理解的不错
回复
更多评论
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-12-01 10:57 编辑过
相关文章:
Log4j的使用
dom4j操作xml基础--Visitor访问模式解析XML
Visitor访问者模式---------学习dom4j时遇到的顺便拿来交流
office javaScript调试工具
java截取字符串的一些常用处理
JFreeChart简单使用
用commons-email-1.1.jar实现发邮件功能:
Struts2表单请求流程(二)— Struts2高级的POJO访问
Struts2表单请求流程(一)
Thinking in Java notebook
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
<
2008年9月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
我参与的团队
分享.学习.交流团队(0/0)
西安java用户群(0/0)
深圳Java开发者之家(0/0)
随笔分类
DATABSE(1)
Java学习笔记(28)
Spring/Hibernate/Struts2(3)
操作系统的一些解决方案(2)
源码备份
生活感悟(2)
随笔档案
2008年8月 (6)
2008年4月 (4)
2008年3月 (1)
2008年1月 (1)
2007年12月 (20)
2007年11月 (6)
文章分类
系统的一些解决方案(1)
文章档案
2007年11月 (1)
新闻分类
Program Information
一些转载的经典(2)
新闻档案
2007年12月 (1)
2007年11月 (1)
收藏夹
CSS(7)
DATEBSE(5)
J2EE/Jsp/Servlet(1)
JavaSceipt(1)
Java基础知识
Struts2(4)
设计模式(1)
最新随笔
1. Log4j的使用
2. dom4j操作xml基础--Visitor访问模式解析XML
3. Visitor访问者模式---------学习dom4j时遇到的顺便拿来交流
4. office javaScript调试工具
5. dom4j操作xml基础
6. java截取字符串的一些常用处理
7. Spring2.5.3+Hibernate3.2+Struts2.0.11整合
8. JFreeChart简单使用
9. 用commons-email-1.1.jar实现发邮件功能:
10. Struts2中select/doubleselect标签数据显示
搜索
最新评论
1. re: JDK5增强for循环的使用
这是增强法么? 意思和 foreach差不多吧
--sfli_g
2. re: Struts2中select/doubleselect标签数据显示
这些是我毕业设计里的东东摘出来写了点,最近忙一项目没有时间找这些,你要是需要的话我把整个包发给你吧!laoshulin@gmail.com
--凌晨风
3. re: Struts2中select/doubleselect标签数据显示
评论内容较长,点击标题查看
--有点晕
4. re: 去北京面试时的题目(老师生日)微软面试题
评论内容较长,点击标题查看
--Passerby
5. re: JDK5增强for循环的使用
这个叫遍历,用来浏览集合,数组什么的很好的.
--孤狼
阅读排行榜
1. Struts2中select/doubleselect标签数据显示(3478)
2. Spring2.5.3+Hibernate3.2+Struts2.0.11整合(3189)
3. 去北京面试时的题目(老师生日)微软面试题(2807)
4. JDK5增强for循环的使用(2690)
5. dumprep 0 -k引起的重启问题(2424)
评论排行榜
1. 去北京面试时的题目(老师生日)微软面试题(23)
2. JDK5增强for循环的使用(17)
3. Spring2.5.3+Hibernate3.2+Struts2.0.11整合(12)
4. 用commons-email-1.1.jar实现发邮件功能:(10)
5. 开源软件逐渐走进了我的生活(9)