什么是static关键字

static关键字我们经常接触,不过我们一直没有讨论过它到底是什么,有什么具体的作用,那static关键字是什么呢,有啥用呢?

static是静态的意思,是一个修饰符,就像是一个形容词,是用来形容类,变量,方法的。

static修饰变量,这个变量就变成了静态变量,修饰方法这个方法就成了静态方法,
static关键字方便在没有创建对象的情况下来进行调用(方法/变量)。
static关键字的作用
static关键字你可以理解为是一个形容词,一般是用来形容类、方法、变量,代码块,还有一个作用是用来静态导包,本关我们只讨论它的三个用法。

1.修饰变量

不使用static关键字访问对象的属性:使用static关键字访问对象的属性:注意:如果一个类的成员变量被static修饰了,那么所有该类的对象都共享这个变量。无论这个类实例化多少对象,它的静态变量只有一份拷贝。
如:

输出:

李四
李四
李四

2.修饰方法

用static关键字修饰的方法叫做静态方法。静态方法我们已经用过,它有一个特点相信你已经很熟悉,那就是不需要创建对象就可以直接使用。
如:注意:

静态方法不能使用类的非静态变量;

静态方法可以直接调用静态方法,但是调用普通方法只能通过对象的实例才能调用。

3.静态代码块

我们先来看一段静态代码块的运行效果:

输出结果:

我被调用了

上图中static{ }就是一个静态代码块。

我们在main方法中没有编写任何代码,可是运行的时候,程序还是会输出我被调用了,由此我们可以发现静态代码块是不需要依赖main方法就可以独立运行的。

关于静态代码块你只需要记住一句话:在类被加载的时候运行且只运行一次。

静态代码块中变量和方法的调用也遵守我们之前所说的规则,即只能直接调用静态的属性和方法。

(图文来自educoder平台)

static静态方法相关推荐

  1. static(静态方法中)如何调用非静态方法?

    在静态方法的内部不能直接调用非静态方法,因为方法属于类而不是对象,我们可以通过自己手动new对象来在静态方法中调用 简单case: 如下代码设置Build类一个静态方法一个成员方法 public cl ...

  2. static静态方法获取yml配置

    java普通类获取yml文件的配置很简单,网上有很多类似的例子.比如: @Value("${zzp2.name}") private String name2;@Value(&qu ...

  3. struts bean static 静态方法注入

    <struts> <bean class="org.apache.struts2.dispatcher.FilterDispatcher" static =&qu ...

  4. static静态方法(1)——c#静态方法怎么调用非静态方法

    一般情况下Sta()是不能调用NoSta()的,但是可以通过增加一个静态成员来调用. class B {private static B instance=new B();public static ...

  5. 静态方法static 的了解

    2019独角兽企业重金招聘Python工程师标准>>> 学习了static静态方法,静态变量的一些知识,简单的进行一些总结: 静态方法无参数且无返回值的方法 静态方法有参数无返回值的 ...

  6. static用法解析---java语言

    在类中定义的数据成为类的数据成员,例如字段,常量等.而函数的成员方法则提供操作类的数据的功能,函数成员方法.属性.构造函数等.对象中的数据成员和方法一般都是对象私有的,即只有对象本身才能访问,其他对象 ...

  7. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 同时注入普通方法、静态方法、构造方法 )

    文章目录 一.同时注入普通方法.静态方法.构造方法 二.完整代码示例 一.同时注入普通方法.静态方法.构造方法 如果要同时为 Groovy 类注入大量方法 , 使用 Category 分类 或 Met ...

  8. Java功底之static、final、this、super

    看完本文后,请看转自键行天下的博客: http://blog.csdn.net/chensheng913/archive/2004/07/05/34564.aspx 一.static 静态方法:    ...

  9. 1.18 static的常见问题和使用误区

    1)为什么要用"static"关键字? 通常来说,用 new 创建类的对象时,数据存储空间才被分配,方法才供外界调用.有时候我们只想为特定域分配单一存储空间,不考虑要创建多少对象或 ...

最新文章

  1. geomesa hbase geoserver
  2. GraphPad Prism 9.3 更新内容,支持Monterey和Win11
  3. 一文详解支持向量机(SVM)
  4. 浮点数能够表示的数的范围是由其()的位数决定的。
  5. “约见”面试官系列之常见面试题之第六十篇之事件绑定和普通事件(建议收藏)
  6. 论文浅尝 | Know-Evolve: Deep Temporal Reasoning for Dynamic KG
  7. BubbleSort 优化后的冒泡排序算法
  8. 2019量子计算机上市公司,2019年第一炮:量子计算机终于来了!
  9. 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替...
  10. jQuery Mobile中列表listview(ol、ul)的data-*选项
  11. 应用密码学:协议、算法与C源程序(学习第一章)
  12. 约瑟夫环数学问题——举一反三、触类旁通
  13. JavaDay14-球员管理项目
  14. 俄语学习之——字母及发音对照表
  15. Allegro通过宏录制设置快捷键
  16. NBA比赛数据分析与预测
  17. 【Vue】学习笔记-组件传值的数据累加器
  18. 如何证明函数有界_科技界正在抓住机会来证明不平等
  19. Google的S2算法原理以及使用Java版本--部分参考自《高效的多维空间点索引算法》
  20. 2.Buffer详解

热门文章

  1. 基于Google的嵌入式系统android开发语音技术(语音搜索,语音朗读文章,语音控制)
  2. ubuntu系统使用wireshark对websocket抓包
  3. mongo error when saving document 1 not primary while writing to
  4. 函数名前加::的缘由
  5. python的cubes怎么使用_Python之Cubes框架使用,什么是框架,本文主要内容包含Cu
  6. C语言的布尔类型(_Bool)
  7. 音视频之——FFmpeg教程(一)——初见FFmpeg
  8. 一个字符占几个字节?
  9. Linux下的ping6
  10. 炉石传说心得 [20160816]