在Java语言中,static表示“静态”的意思,使用场景可以用来修饰成员变量和成员方法,当然也可以是静态代码块。static的主要作用在于创建独立于具体对象的域变量或者方法。本文主要来去讲解一下static的来龙去脉。

static要解决什么问题?

我们知道,当我们通过new关键字去创建对象的时候,那么数据的存储空间才会被分配,类中的成员方法才能被对象所使用。但是呢有两种特殊的情况:

1、我们通过new关键字创建的对象共享同一个资源,而不是说每个对象都拥有自己的数据,或者说根本就不需要去创建对象,这个资源和对象之间是没有关系的。

2、希望某个方法不与包含它的类的任何对象联系在一起。总结下来就是说:即使没有创建对象,也能使用属性和调用方法,static目的就是在于解决这个问题。//加入Java开发交流君样:756584822一起吹水聊天

格式

修饰变量:static 数据类型 变量名

修饰方法:【访问权限修饰符】 static 方法返回值 方法名(参数列表)

特点

static可以修饰变量,方法被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。在类被加载的时候,就会去加载被static修饰的部分。被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。//加入Java开发交流君样:756584822一起吹水聊天

static静态变量

被static修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。

静态变量和实例变量的区别

实例变量:每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。

静态变量:静态变量由于不属于任何实例对象,是属于类的,所以在内存中只会有一份,在类的加载过程中,JVM为静态变量分配一次内存空间。

static静态方法

被static修饰的方法也叫做静态方法,因为对于静态方法来说是不属于任何实例对象的,那么就是说在静态方法内部是不能使用this的,因为既然不属于任何对象,那么就更谈不上this了。

static应用场景

如果某个成员变量是被所有对象所共享的,那么这个成员变量就应该定义为静态变量。

static如何去访问//加入Java开发交流君样:756584822一起吹水聊天

静态变量:

类名.静态变量

对象.静态变量(不推荐的)

静态方法:

类名.静态方法

对象.静态方法(不推荐)

这里呢就啰嗦一句,由于被static修饰的变量和方法是不属于任何实例对象的,所以在这里,强烈建议不要通过对象的方式去访问静态的变量或者方法。

static使用注意事项

在静态方法中没有this关键字因为静态是随着类的加载而加载,而this是随着对象的创建而存在的。静态比对象优先存在。静态可以访问静态的,但是静态不能访问非静态的。非静态的可以去访问静态的。

总结

静态只能访问静态。非静态既可以访问非静态的,也可以访问静态的。

【解决bug之路】JAVA 之 static相关推荐

  1. 解Bug之路-Nginx 502 Bad Gateway

    解Bug之路-Nginx 502 Bad Gateway 前言 事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻.当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在 ...

  2. 解Bug之路-Druid的Bug

    2019独角兽企业重金招聘Python工程师标准>>> 解Bug之路-Druid的Bug 笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的 ...

  3. 多次执行sql 后卡住_解Bug之路记一次中间件导致的慢SQL排查过程

    解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,就以此为素材写出了本篇文章. Bug现场 我们的分 ...

  4. Java关键字static

    Java关键字static static表示静态的或者全局的,只能用来修饰变量.方法或方法块.它表示被修饰的内容在一定范围内是可以共享的. static修饰变量 static修饰的变量如果权限为pub ...

  5. sql 在某段时间_解Bug之路记一次中间件导致的慢SQL排查过程

    解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,就以此为素材写出了本篇文章. Bug现场 我们的分 ...

  6. java使用cmd编译中文时错误,解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题...

    解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题 解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题 在刚开始学习Java的过程中,考虑到记事本应用没 ...

  7. 解Bug之路-主从切换”未成功”?

    解Bug之路-主从切换"未成功"? 前言 数据库主从切换是个非常有意思的话题.能够稳定的处理主从切换是保证业务连续性的必要条件.今天笔者就来讲讲主从切换过程中一个小小的问题. 故障 ...

  8. 遗传算法解决8数码难题——Java

    遗传算法解决8数码难题--Java 什么是遗传算法 什么是8数码难题 解决8数码难题--Java 轮盘赌算法思想 代码优化 参考文章 什么是遗传算法 ​   遗传算法是模拟达尔文生物进化伦的自然选择和 ...

  9. 解Bug之路-串包Bug

    解Bug之路-串包Bug 笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug.现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少 ...

最新文章

  1. 深度学习目标检测详细解析以及Mask R-CNN示例
  2. “智源论坛Live”报名 | 清华大学高天宇:实体关系抽取的现状和未来
  3. extern用法汇总
  4. 论SOA架构的几种主要开发方式
  5. 【原创】TLV5618芯片驱动程序
  6. cat/tac/more/less 命令详解
  7. CTFshow 命令执行 web40
  8. c++:vector用法
  9. 介绍一下python有趣的库-tqdm
  10. 语句include和require的区别是什么?
  11. 使用git向码云上提交代码
  12. 可用来编写html的文件,Web前端
  13. excel生成多个sheet .net
  14. python哈姆雷特词频统计_python day 17 文本词频统计
  15. 完整版《贴心萌宝荒唐爹》小说全文阅读
  16. java detach_java – Spring JpaRepository – Detach和Attach实体
  17. 聊聊Uber公司迁移数据库这件事
  18. macbook 唤醒后不能输入密码
  19. 未来计算机代替人脑吗,计算机不可能替代人脑写作
  20. 软考:头脑风暴与德尔菲法的区别(转)

热门文章

  1. 长沙4月21日开发者大会暨.NET社区成立大会活动纪实
  2. 程序员修神之路--问世间异步为何物?
  3. 编程语言的发展趋势及未来方向(4):动态语言
  4. Entity Framework Core延期及弃用的特性
  5. java定义基础变量语句_java语言基础-变量
  6. C# 读写ini文件 保存信息
  7. Android数据手册:Android颜色码制表
  8. WireShark抓包之提示Alert Level: Fatal, Description: HandShake Failure
  9. C++入门指南及实战 第二步 HelloWorld及扩展详解
  10. 计算机打字比赛活动策划书怎么写,打字比赛策划书范文.docx