Java基础之static关键字

一、概述
static 关键字是一个修饰符,它可以用来修饰类的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。不用创建来调用,可以直接使用类名调用。

二、定义和使用格式
类变量
当static修饰成员变量时,该变量称为类变量。
该类的每个对象都共享同一个类变量的值。
任何对象都可以更改该类变量的值。
任何对象都可以在不创建该类的对象的情况下对类变量进行操作。
定义格式:static 数据类型 变量名调用格式:类名.静态类变量名
类名.静态类变量名
静态方法
当static修饰成员方法时,该方法称为类方法。
直接使用类名调用
定义格式
权限修饰符 static 返回值类型 方法名(参数列表){ //执行语句}
调用格式
类名.静态方法名(参数列表)
总结
被static修饰的成员方法,称为静态成员方法。
通常访问静态方法的方式是通过类名来访问。
访问静态成员的格式:类名.静态访问名(参数列表)
只要一个方法被static关键字所修饰,那么这个方法就和对象没有关系,只和类有关系。
在静态方法中不能使用非静态成员变量。
三、静态方法注意事项
调用方法
静态方法,可以使用类名直接调用
非静态成员方法,需要使用对象调用
静态关键字是一个修饰符,可以修饰类中的成员方法和成员变量,但是不能修饰构造方法。
构造方法的作用是用来创建对象给对象初始化,一旦被static修饰,就不需要对象调用。那么构造方法就和对象没关系。没有对象的话,构造方法就没价值了。
静态方法它是在类加载的时候,就在内存中加载完成,可以直接运行的方法。
非静态方法,它的运行必须是在类加载完成之后,通过new关键字创建出对象之后,通过对象才能调用。
静态方法中不能调用非静态方法
i. 静态方法在类加载完成之后可以通过类名直接调用,而类加载完了不代表类中产生了对象。
ii. 非静态方法必须依赖对象才能运行
非静态方法中可以调用静态方法
非静态方法可以运行的时候,在内存中就一定有对象产生,存在对象,就说明对象所属的类已经被加载完成,类加载完成,静态方法就已准备就绪。
静态方法中不能使用this关键字
this关键字表示的是当前调用方法的对象,而静态方法中没有对象。
四、静态和非静态成员变量的区别
内存中出现的时间不同
静态成员变量:在加载类的时候,就在方法区的静态区中存在。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
非静态成员变量:当创建类的对象的时候,随着对象的产生在堆中出现。
所在的内存区域不同
静态成员变量:在方法区的静态区中。
非静态成员变量:在方法区的非静态区中。
初始化时间不同
静态成员变量:在类加载的时候就会初始化,类加载完成,变量初始化结束
非静态成员变量:在对象的创建过程中被初始化。
生命周期不同
静态成员变量:堆在类的加载在方法区的静态区中存在,直到类从方法区卸载,才会消失。
非静态成员变量:随着对象的产生而存在,随着对象的消失而消失。
五、静态代码块
代码块: 使用大括号把代码封装起来,被封装的这部分代码称为一个代码块

静态代码块: 定义在成员位置,使用static修饰的代码块{}。

  1. 位置:类中方法外,和成员方法并列,和先后顺序无关。
  2. 执行:随着类的加载而执行且只执行一次。
  3. 作用:给类变量进行初始化赋值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值