概述
整理一下笔记,温故而知新,激励自己一直去学习,慢慢的进步,加油????,同时也期待你们的三连鼓励
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)静态方法:通过 类名.方法名 直接访问
静态方法:
- 用static修饰
- 属于类,只有一份,存在方法区
- 用这个变量,通过类名去点“.”
- 什么时候用:当被所有对象共享的数据被同时使用的时候,设计为静态。假设方法为非静态的,那么输出的结果与方法,对象、数量都无关,只与参数有关。结果只和参数有关,与方法、对象、数量和其他无关时,设计为静态
- 静态方法中没有隐式this,this表示当前对象,静态方法属于类,不属于对象,不能调用动态的方法
注意:static修饰的方法,不能直接访问本类中的非静态(static)成员(包括方法和属性),
本类的非静态方法可以访问本类的静态成员(包括方法和属性),可以调用静态方法。
静态代码块:代码块就是:{ }里面的对象
- 有static修饰:static{ }
- 属于类,在类被加载时自动执行,
- 静态代码块只执行一次,因为类只被加载了一次
- 什么时候用:加载静态资源的时候
例如:游戏的背景图片只有一张,像图片、mp3、视频都属于静态的
static final:常量
被static final修饰的变量是常量,常量是不能被修改的,所以写静态的不如写常量
- 声明的同时就需要赋值,不然会报错
- 是静态修饰的,所以用类名去点,变量不能改变
- 建议用大写,如果有多个单词全部都要大写,单词之间用下划线分割:例如:MAX_A
- 什么时候用:数据永远不会改变,经常使用
- 如何编译:会把变量替换为具体值,相对效率较高(变量在编译的时候每次都会先读取Int a;然后再读取值)
最后
以上就是笨笨斑马为你收集整理的什么是final、static和static final?的全部内容,希望文章能够帮你解决什么是final、static和static final?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复