本文内容来自:java的static关键字 – Break易站 (原文网站阅读体验更好)

通过static关键字可以满足两方面的需要。一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。

有些面向对象语言采用类数据和类方法两个术语,来表示static修饰的数据和方法,代表那些数据和方法只是作为整个类,而不是类的某个特定对象而存在的。有时,一些Java文献里也用到这两个术语。

只须将Stacie关键字放在定义之前。就可以将字段或方法设定为static。下面的代码就生成一个static字段,并对其进行了初始化:

1
2
3
class StaticTest{
static int i =55
}

现在,即使你创建了两个对象,两个对象也只有一份存储空间,这两个对象共享同一个i。再看看下面代码:

1
2
StaticTest st1=new StaticTest();
StaticTest st2=new StaticTest();

在这里,st1.i和st.i指向同一存储空问,因此它们具有相同的值55

引用static变量有两种方法。如前例所示,可以通过一个对象去定位它,如st1.i也可以通过其类名直接引用,而这对于非静态成员则不行。

1
StaticTest.i++:

其中,++运算符对变量进行递加操作。现在值变成了56,但是此时,st1和st2.i仍具有相同的值56。

使用类名是引用用static变量的首选方式,这不仅是因为它强调了变量的static结构,而且在某些情况下它还为编译器进行优化提供了更好的机会。

类似逻辑也应用于静态方法。静态方法也可以如下构建:

1
2
3
class increST{
static void increment(){StaticTest.i++:}
}

可以看到,我们可以通过创建对象,调用对象的方法来用静态方法,

1
2
increST incre = new increST();
incre.increment();

或者,也可以直接用类来直接调用静态的方法

1
IncreST.increment();

本文内容来自:java的static关键字 – Break易站


—Author: Arvin Chen —Web Address: www.breakyizhan.com (Break易站)

最新文章

  1. Scala:映射和元组
  2. python入门练习题1
  3. 软件包管理 之 Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南
  4. 利用SecureCRT上传、下载文件(使用sz与rz命令)
  5. mojo 默认use utf8;
  6. STL容器小结
  7. python_变量的命名规则
  8. 基于python的知乎开源爬虫 zhihu_oauth使用介绍
  9. lua中易混淆函数
  10. ●BZOJ 4289 PA2012 Tax
  11. Thinkphp----------Thinkphp3.2的目录结构介绍
  12. sklearn.preprocessing.LabelEncoder的使用
  13. headfirst python 07 ~ 08
  14. ScrollView fillViewport
  15. OI回忆录第一章 逐梦之始
  16. [Machine Learning & Algorithm] 随机森林(Random Forest)-转载
  17. saltops 安装及相关环境安装
  18. 解决多个python的兼容问题
  19. 组合比较符(PHP7+)
  20. Vim编程常用命令

热门文章

  1. springMVC使用jsp:include嵌入页面的两种方式
  2. Common Data Service (CDS) 初探
  3. Python爬虫(十二)_XPath与lxml类库
  4. Java爬虫——网易云热评爬取
  5. C#复习资料
  6. tf.train.ExponentialMovingAverage
  7. 我的Android进阶之旅------>Android知识图谱
  8. 一句话搞定webmap(一)——轻地图组件
  9. (转)java内部类详解
  10. MongoDB 数据库备份与恢复