静态static、final的使用

static 静态

static修饰符:成员修饰符,只能修饰类的成员(变量和方法),方法里面不能使用static修饰
被static修饰的成员,称为静态成员

静态内存图

在这里插入图片描述
在这里插入图片描述

静态的调用规则

内存图进行分析,静态的成员在内存中有自己的所属,属于自己的类
因此:静态的调用方式:类名.静态成员

静态使用的注意事项
  • 不能在静态上下文中引用非静态变量
    。静态不能直接使用非静态
    。原因:生命周期,静态成员优先于非静态成员出现在内存中
    静态不能调用非静态
    非静态可以调用静态
  • 静态方法中,禁止使用this和super
    。this和super都和对象有关联
    。静态优先对象存在
静态和对象无关性

多态:对象的多态性
静态成员:属于自己的类,和对象无关

public static void main(String[] args) {
	FU f = new zi();
	system. out. println(f.s); //s 静态变量,编译运行全是父类
	f. show(); //方法show() 静态方法,编译运行全那是父类
}
成员的调用方式
  • 静态成员
    。类名调用
    。可以被对象调用(错)javac编译器,直接编译为类名
  • 非静态成员
    。只能被对象调用
main方法解释
  • public:被JVM调用,权限足够大
  • static :JVM通过类名调用方法main
  • void:返回值,返回调用者,JVM获得返回值无意义
  • main:名字固定
  • String[] args:存储字符串数组,以后会添加JVM的启动参数
静态成员和非静态成员的区别
  • 内存上看区别
    。静态成员变量,跟随类进入到静态区
    。非静态成员变量,跟随对象进入到堆内存
  • 所属上看区别
    。静态成员变量,属于自己的类
    。非静态成员变量,属于对象
  • 从生命周期上看
    。静态成员优先于非静态进入内存,在静态区里,程序结束才释放,最长
    。非静态成员进入堆,对象成为垃圾后JVM进行回收相对较短
  • 调用方式上看
    。静态类名调用
    。非静态对象调用
  • 数据使用上看
    。静态的成员,是所有对象的共享数据
    。非静态的成员,是对象自己的特有数据

什么时候使用静态修饰

具体事务具体分析了,根据分析的结果,决定是否使用静态修饰
分析方法:分析这些事物之间是否存在共享数据,出现共享数据,static修饰
以上说的是静态成员变量
什么时候使用静态方法:如果方法中的功能使用了静态的成员变量,这个方法就应该static修饰

final修饰符

final翻译为最终的,不可改变的

  • 可以修饰类
public final class A{} 最终类
最终类不被子类继承,A类没用孩子(太监类)
以前学过最终类:String Scanner System
  • 可以修饰方法
public final 返回值类型 方法名(参数列表){} 最终方法
最终方法,不能被子类重写
有些累,定义的方法,一部分很完美,另一些方法不是很完善
  • 可以修饰局部变量
final 数据类型  变量名 = 值 ; 最终变量
被final修饰的变量,一次赋值,终身不变
final修饰的是引用类型,引用类固定的是内存地址
  • 可以修饰成员变量
    成员变量定义在类中,方法外面.内存是在堆里面,变量会有默认值的.
    固定的不是变量在内存中的默认值, final锁住的是我们手动赋值.
    一次赋值,终身不变
    成员变量的赋值方式:
  • 定义赋值
  • 构造方法赋值
  • set方法赋值
    注意:成员变量使用final修饰 final int a ;构造方法可以为变量a赋值set方法不行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值