小朋友你是否对java中的static满脸问号
看完博主的这一篇博客不仅让你满脸问号,还让你浑身充满问号
皮一下很开心(小声bb)
目录:
1static的作用
2.static的应用场景
3.静态实例变量的区别
4.访问静态变量和方法的方式
5.静态代码块和其他代码块的执行顺序
6.静态内部类
7.静态导包
1.static的作用
(1)static是一个能创建独立于具体对象的域变量或者方法
即使没有创建对象也能使用的属性和方法(这一点很重要),这些方法和属性不单独属于某一个实例化的对象,而是为所有对象共享有点中央空调的意思,相当于中央空调有n个女朋友(女朋友指代这里的对象),然后这些女朋友都有同一个男朋友
(2)形成静态代码块优化性能
静态代码块能放在类的任何一个地方,当类首次被加载的时候就会执行静态代码块里边的内容(一般代码块都是初始化的作用),而且是只会加载一次并且在第一次加载的时候分配内存空间(以后创建对象不用重新分配),第二次加载类的时候就不会再执行
注意这里虽然只初始化一次但是还可以根据自己的意愿去更改它初始化的值的,被一个对象更改所有对象的值都会更改因为它是共享
由于它只会加载一次的特性,所以很多只需要初始化一次的东西放在里边,比那些只要创建对象就会加载一次的代码块效率高得多,所以就会优化程序性能
2.static的应用场景
(1)修饰成员变量
(2)修饰成员方法
(3)静态代码块
(4)静态内部类
3.静态变量和实例变量的区别(重点)
(1)简单来说就是用static修饰的成员变量就是静态变量,不用static修饰的成员变量就是实例变量
(2)不同对象的实例变量都有不同的内存空间,而所有对象的静态变量都是同一块地址的值
(3)访问方式有所区别
静态方法和实例有相同的区别。我们有时候把静态的方法和静态变量称为类方法和类变量
4.访问静态的变量和静态方法
(1)访问静态变量:
类名.静态变量
实例对象.静态方法
(2)访问静态方法:
类名.静态变量
对象.静态方法
(3)关于静态方法访问的注意事项:
我们知道静态方法只能访问静态方法和静态属性,但是有时我们却能在main方法中调用非静态的方法这是为啥,如下图:
这为啥不报错
这里就要讲一下静态和非静态变量是何时被初始化的:
首先静态变量在类被jvm加载的时候就会分配内存然后初始化,这时候非静态变量并没有分配内存,你在静态的方法初始化的时候调用这些还没分配内存的数据就会发生错误,所以静态方法里边不能调用非静态成员,当我们创建一个新的对象的时候,那么那些非静态的属性就会被分配内存和初始化,这时候你再在静态方法里边调用就能想应的属性和方法就不会产生错误了,所以当在静态方法里边实例化对象后就可以调用那些非静态的属性
可能这里有杠精又来了,那么照你这么说非静态方法不是也不能调用非静态方法吗(事实上是可以的),
这里的非静态方法之所以能调用非静态方法是因为他们同时分配内存,编译器不会认为那个调用别的方法的方法头大就先给它分配内存,而是同时分配(都是在创建一个实例化对象的时候分配),所以只要非静态方法调用别的非静态方法,那么他俩都是已经存在的,自然就可以正常调用
5.静态代码块和其他代码块等的执行顺序
1.先讲几个块(当作休息
小朋友你是否对java中的static满脸问号相关推荐
- 面试季,Java中的static关键字解析
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面 ...
- Java中的static关键字详解
** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...
- Java中的static关键字解析 转载
原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...
- java aio为什么不稳定_为什么我不提倡在Java中使用static
static从Java1.0开始便是Java中的关键字,用于表征静态属性或方法.它也得到了广泛的应用,在业务中定义XXXUtil是一种常规的模式,甚至是比较知名的类库(比如Apache Common ...
- 二十五、深入Java中的static静态修饰符
@Author:Runsen @Date:2020/6/2 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- [转] Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- 【Java学习笔记之十五】Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- C\C++与Java中的static关键字
C\C++里面的static: 面向过程的static: 在c和c++面向过程的设计里,在全局变量前加上static关键字则可将该变量定义为一个静态全局变量,比如: static int a; 那么c ...
- C++与Java中的static成员总结
简述 在结构化程序设计中,内存中数据的共享是通过参数, 全局变量实现的; 在面向对象程序设计中函数与数据成员封装在一起, 数据共享通过类内部数据成员之间的相互访问, 外部对象则通过静态成员(即stat ...
最新文章
- [mysql] 常用命令二
- 面试之作用域链与闭包
- MySQL高级-索引是个什么东西?explain到底怎么用-MySQL查询优化大全
- [转]写好shell脚本的13个技巧
- Hbase error: KeeperErrorCode = NoNode for /hbase/master错误
- 计算机学院特色迎新标语,2019大学各学院开学迎新创意标语 2019各大学网红创意迎新宣传标语...
- 看呆了!日本男粉丝凭瞳孔倒影找到偶像住所 实施猥亵...
- mtk 帧同步_【小松教你手游开发】【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)...
- 源码分析三:OkHttp(2)—拦截器简介
- DPDK-VPP 学习笔记-01
- 深入浅出Python闭包
- (Win7重装)向官方Win7镜像注入驱动程序
- 《2018版-业余无线电(相关频率)对照表》
- [机缘参悟-8]:易经的核心思想(变与不变、天人合一)、核心概念(象、数、理、卦、爻、辞)、系统架构(层次模型)
- L13:MySQL - 性能与SQL优化2
- [转]高分一号的落后与特色
- Lintcode 1667.石头
- 计算机辅助项目管理课程方案,计算机辅助项目管理课程设计-20210310112313.pdf--原创力文档...
- 天干地支计算公式_日干支公式速算法,根据阴历或阳历推算日干天干地支方法...
- 护眼台灯多少瓦对眼睛好?护眼台灯功率的区别和用途
热门文章
- 【MCtalk直播】全面复盘直播答题,深度剖析产品架构的难点与坑
- LeetCode_226.翻转二叉树
- 优化ASP.NET应用程序性能研究与探讨
- mybatis写当天 当月的数据 时间段数据https://www.cnblogs.com/xzjf/p/7600533.html
- Linux dd命令制作U盘启动盘
- 《编写高质量代码:改善c程序代码的125个建议》——建议20-6:尽量将循环嵌套控制在3 层以内...
- 使用SSH执行远程登录
- 修正wme输出的ASF流数据
- SqlConnection就一定要关闭吗?
- 【Python】PAT-1007-素数对猜想