【答疑解惑】java中static关键字的作用

static方法

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

static变量

static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。

static代码块

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jed的技术阶梯

详解 final 修饰符

被 final 修饰的实例变量必须显示的指定初始值,而且只能在以下3个位置指定初始值:

1224
来自专栏Python爱好者

Java基础笔记15

1438
来自专栏程序你好

c#中的可空类型和空合并操作符(Nullable Types 和 Null Coalescing Operator)

802
来自专栏Jack的Android之旅

疯狂Java笔记之对象及其内存管理

类体内定义的变量被称为成员变量〔英文是Field)。如果定义该成员变量时没有使用static 修饰,该成员变量又被称为非静态变量或实例变量;如果使用了stat...

683
来自专栏C/C++基础

ToString截取字符串的用法

string test1=test.ToString("F");//结果为343392590725.68,保留小数点后两位

722
来自专栏LanceToBigData

JavaSE(八)之Collection总结

  前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合。 一、Collection接口 首先我们要一张图来说明:...

2106
来自专栏前端真相

JavaScript 五种基本数据类型(下)

1937
来自专栏Kevin-ZhangCG

[ Java学习基础 ] Java的对象容器 -- 集合

2028
来自专栏WindCoder

Java中的数组是对象吗?

首先说明:Java中的数组是对象,这个可以查看The Java Language Specification SE(4.3.1)可得,另外本文讨论的相关问题的结...

491
来自专栏专注 Java 基础分享

关于类的对象创建与初始化

今天,我们就来解决一个问题,一个类实例究竟要经过多少个步骤才能被创建出来,也就是下面这行代码的背后,JVM 做了哪些事情?

4046

扫码关注云+社区