沂水网站开发网站设计策划书模板
2026/4/8 17:40:37 网站建设 项目流程
沂水网站开发,网站设计策划书模板,湘潭哪里做网站,如何在360做网站SEOJava static 与 final 详解#xff08;2025–2026 视角#xff0c;简单易懂版#xff09; static 和 final 是 Java 中最容易混淆的两个修饰符#xff0c;但它们解决的问题完全不同。 用最生活化的比喻来记住#xff1a; 修饰符生活比喻核心含义修饰对象能不能改什么时…Java static 与 final 详解2025–2026 视角简单易懂版static 和 final 是 Java 中最容易混淆的两个修饰符但它们解决的问题完全不同。用最生活化的比喻来记住修饰符生活比喻核心含义修饰对象能不能改什么时候初始化static“全校共用的一台饮水机”属于类而不是某个对象变量、方法、代码块、内部类变量可以改类加载时变量final“买回来就焊死的手机电池”不可再修改终态、常量、最终实现变量、方法、类变量一旦赋值不可改变量必须在定义或构造器中赋值一、static 的四种主要用法最常用排序static 变量类变量classCounter{staticintcount0;// 全班共用一个计数器publicCounter(){count;// 每 new 一个对象count 1}}特点只在类加载时初始化一次所有对象共享同一份内存通过类名.变量访问推荐static 方法类方法classMathUtil{publicstaticintmax(inta,intb){returnab?a:b;}}// 调用方式MathUtil.max(3,7);// 不需要 new 对象特点不能访问非静态成员this、实例变量、普通方法常用于工具类Arrays、Collections、Mathstatic 代码块类初始化块classConfig{staticStringurl;staticintport;static{// 只执行一次通常用来加载配置文件、初始化复杂静态变量urljdbc:mysql://localhost:3306/test;port8080;System.out.println(静态代码块执行了);}}执行时机类第一次被主动使用时new、调用静态方法、访问静态变量等static 内部类静态嵌套类classOuter{staticclassStaticInner{voidsay(){System.out.println(我是静态内部类);}}}// 使用Outer.StaticInnerinnernewOuter.StaticInner();与普通内部类的最大区别不依赖外部类实例可以独立创建二、final 的四种主要用法final 变量最常见finalintMAX_SIZE100;// 常量推荐全大写下划线finalStringNAME;// 声明时不赋值也没关系NAME张三;// 但必须在构造器结束前赋值// final 引用类型引用不能改对象内容可以改finalListStringlistnewArrayList();// list new ArrayList(); // 错不能重新指向新对象list.add(苹果);// 对内容可以改记住口诀final 修饰引用 → 地址不可变内容可变final 方法不能被子类重写classAnimal{finalvoidbreathe(){System.out.println(呼吸);}}classDogextendsAnimal{// void breathe() { } // 编译错误不能重写 final 方法}常见场景模板方法模式中不想让子类改动核心步骤final 类不能被继承publicfinalclassString{...}// Integer、Long、Double、Math 等核心类都是 final 的意义防止被恶意继承、保证不可变性、安全性final static组合最常见的常量写法publicclassConstants{publicstaticfinalintPAGE_SIZE20;publicstaticfinalStringDEFAULT_CHARSETUTF-8;}三、static 与 final 组合时的几种典型写法对比写法含义是否可修改访问方式典型场景static int a 10;类共享变量可以类名.a计数器、全局配置final int b 20;实例常量每个对象一份不可对象.b对象唯一标识、创建时确定值static final int c 30;全局常量最常见不可类名.c配置常量、魔法值替代final static int d;语法允许但必须在静态块或定义时赋值不可类名.d—四、常考易错点面试/调试高频static 方法里能不能用 this / super→不能因为 this 代表当前对象而静态方法不依赖对象final 局部变量可以不初始化吗→ 可以但使用前必须赋值编译器强制检查static final 变量在类加载时初始化吗→ 是的但如果是复杂表达式会在静态代码块中完成接口里的变量为什么默认是 public static final→ 接口不能有状态只能定义常量所以自动加上这三个修饰符final 数组 / List 内容能改吗→能因为 final 只保护引用不被重新赋值finalint[]arr{1,2,3};arr[0]100;// 合法// arr new int[5]; // 非法五、总结口诀背下来答题快static→ “全班/全校共用一份类加载时准备好”final→ “焊死、定死、改不了、子类不能覆盖”static final→ “全局常量最推荐的常量写法”static 方法里没有 thisfinal 变量必须初始化一次你现在最容易混淆的是哪一部分static 和 final 一起用时的初始化顺序final 引用类型的内容修改static 代码块和构造代码块的区别接口常量和类常量的写法差异告诉我我可以继续给你更针对性的例子或对比。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询