Java关键字——static、final
2022/1/1 22:08:33
本文主要是介绍Java关键字——static、final,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- static关键字
- final关键字
static关键字
static关键字,表述为“静态的,全局的”,被static修饰的资源(变量或方法),可以直接通过类名调用,而不需要实例化
1 static声明的资源只能被初始化一次,且在整个程序编译通过之后,开始运行之前完成初始化;
public class Father { public String name; public int age; //静态代码块 static { System.out.println("ststic"); } public Father() {//无参构造方法 System.out.println("Father"); } public static void main(String[] args) { Father f = new Father(); } }
ststic
Father
2 修饰的变量称为静态变量。局部变量(如方法中的变量)不能被static 修饰,因为static就有全局
的意思;
3 修饰的方法称为静态方法,静态方法只能调用其他静态资源,不能调用非静态变量,不能应用this和super,因为静态资源的加载先于实例化
;
public class Father { public String name; public int age; public static String subject; //静态资源 //静态代码块 static { System.out.println("ststic"); } //静态方法 public static void learn() { //静态方法只能访问静态资源 subject = "English"; } }
4 被static修饰的变量和方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被该类的所有实例共享
public class Father { public String name; public int age; public static String subject; //静态资源 //静态代码块 static { System.out.println("ststic"); } public static void learn() { //静态方法只能访问静态资源 subject = "English"; } public static void main(String[] args) { Father f = new Father(); f.learn();// √ Father.learn();// √ new Father().learn();// √ } }
5 修饰内部类(静态类),外部类不需要实例化,可以直接通过外部类名调用
public class Father { //内部类 class Mother{ } public static void main(String[] args) { Father f = new Father(); Mother m = f.new Mother(); } }
public class Father { //内部类 static class Mother{ } public static void main(String[] args) { Mother m = new Father.Mother(); } }
- 补充
实例方法和所属的实例绑定
静态方法和所属的类绑定
静态代码块按先后顺序先于主方法执行
注:
静态代码块不能存在于任何方法体内
静态代码块不能直接访问实例变量和实例方法。
请问以下代码加载顺序如何?
public class Father { //静态代码块 static { System.out.println("Father-ststic"); } //构造方法 public Father() { System.out.println("Father"); } } public class Child extends Father{ //静态代码块 static { System.out.println("Child-ststic"); } //构造方法 public Child() { System.out.println("Child"); } public static void main(String[] args) { Child c = new Child(); } }
Father-ststic
Child-ststic
Father
Child
JVM的类加载顺序
static声明的静态资源 > new > {代码块} > 构造方法constructor
子父类中:父类静态资源>子类静态资源>父类代码块>父类构造方法>子类代码块>子类构造方法
public class Father { //静态代码块 static { System.out.println("Father-ststic"); } //代码块 { System.out.println("Father-codeblock"); } //构造方法 public Father() { System.out.println("Father"); } } public class Child extends Father{ //静态代码块 static { System.out.println("Child-ststic"); } //代码块 { System.out.println("Child-codeblock"); } //构造方法 public Child() { System.out.println("Child"); } public static void main(String[] args) { Child c = new Child(); } }
Father-ststic
Child-ststic
Father-codeblock
Father
Child-codeblock
Child
final关键字
final关键字,表述为“最终的,不可更改的” 用来修饰类、方法和变量。
1 final修饰的类不能够被继承;
2 修饰的方法不能被重写;
3 修饰的变量为常量,常量名称必须都为大写,同时要给常量赋值;
4 修饰基本数据类型,变量的值不能被改变;
5 修饰引用类型(对象),该对象的引用(内存地址)不能被改变,即对其初始化之后便不能再让其指向另一个对象。
final int NO = 12; final String NAME = "abc";
这篇关于Java关键字——static、final的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-06责任分配矩阵在项目管理中的作用:结合工具提升团队生产力
- 2025-01-06板栗看板:优化项目管理的实用策略,助你轻松完成任务
- 2025-01-06电商小白怎么选取合适的工具?一站式工具指南来啦
- 2025-01-06企业如何避免春节期间的项目断层?四大方法教给你!
- 2025-01-06初创团队如何在动态环境下利用看板工具快速迭代
- 2025-01-06企业内部管理如何实现高效?四大策略教会你
- 2025-01-06给 Postgres 写一个向量插件 - 向量类型
- 2025-01-06电商蛇年营销新篇章:看板软件打造高效、精准营销体系
- 2025-01-06初创团队如何利用看板工具高效推进产品开发
- 2025-01-06IT项目经理的日常工作是什么?职责与所需技能大解析