什么是final、static和static final?

整理一下笔记,温故而知新,激励自己一直去学习,慢慢的进步,加油💪,同时也期待你们的三连鼓励

final:最终的——不可被改变的(修饰变量的)

修饰变量:不能被修改——1、在声明的同时进行赋值,如果没有赋值就在构造方法中进行赋值

                                      ——2、不管变量是成员变量还是局部变量,被fianl修饰的变量都不能修改

修饰方法:不能被重写

修饰类:被final修饰的类不能被继承,可以去继承

用代码来说明:

 static:静态——修饰属性,方法,代码块

(1)修饰属性:静态属性,也可叫类变量 ,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个。通过  类名.属性名  来访问。是在类加载时被创建并进行初始化,类加载的过程只进行一次,也就是类变量只会被创建一次。

常见的问题:

        1、成员变量有哪些?  

                成员变量分为静态变量和实例变量。

        2、静态变量和实例变量的一般在哪里初始化?

                静态变量:一般在静态方法中初始化,是在类加载时被创建并进行初始化

                实例变量:一般在方法中初始化,在创建对象时被初始化的

        3、静态变量和实例变量的区别?

                静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个;

                实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。在Java开发中,上下文类和工具类中通常会有大量的静态成员。

        4、静态变量(静态方法)和实例变量(实列方法)哪个多?

                 实例变量(实例方法)多。实例变量保存在堆中,new一个就保存一个;

静态变量保存在方法区中,只有一个。

看如下面的代码:实例变量每次创建对象时都会重新保存,每次保存时都会初始化,所以a=0,当a++时等于1,此时a=1;静态变量保存在方法区中,只会保存一次,先创建了一个a对象,执行方法AA,一开始b=0,然后b++=1,后创建了a1对象,此时b=1,所以b++=2,b=2。

 

(2)静态方法:通过  类名.方法名  直接访问    

静态方法:

  1. 用static修饰
  2. 属于类,只有一份,存在方法区
  3. 用这个变量,通过类名去点“.”
  4. 什么时候用:当被所有对象共享的数据被同时使用的时候,设计为静态。假设方法为非静态的,那么输出的结果与方法,对象、数量都无关,只与参数有关。结果只和参数有关,与方法、对象、数量和其他无关时,设计为静态
  5. 静态方法中没有隐式this,this表示当前对象,静态方法属于类,不属于对象,不能调用动态的方法

  注意:static修饰的方法,不能直接访问本类中的非静态(static)成员(包括方法和属性),

本类的非静态方法可以访问本类的静态成员(包括方法和属性),可以调用静态方法。

静态代码块:代码块就是:{  }里面的对象

  1. 有static修饰:static{  }
  2. 属于类,在类被加载时自动执行,
  3. 静态代码块只执行一次,因为类只被加载了一次
  4. 什么时候用:加载静态资源的时候

例如:游戏的背景图片只有一张,像图片、mp3、视频都属于静态的

static final:常量

被static final修饰的变量是常量,常量是不能被修改的,所以写静态的不如写常量

  1. 声明的同时就需要赋值,不然会报错
  2. 是静态修饰的,所以用类名去点,变量不能改变
  3. 建议用大写,如果有多个单词全部都要大写,单词之间用下划线分割:例如:MAX_A
  4. 什么时候用:数据永远不会改变,经常使用
  5. 如何编译:会把变量替换为具体值,相对效率较高(变量在编译的时候每次都会先读取Int a;然后再读取值)
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值