当前位置: 首页 > news >正文

Java-关键字(static,final)

1.1 static关键字

  • static关键字 :

    • 静态的意思 , 可以修饰变量 , 也可以修饰方法 , 被static修饰的成员 , 我们叫做静态成员

  • static特点 :

    • 静态成员被所类的所有对象共享

    • 随着类的加载而加载 , 优先于对象存在

    • 可以通过对象调用 , 也可以通过类名调用 , 建议使用类名

1. 静态变量(Static Variables):

静态变量也称为类变量,它们属于类而不是类的特定实例。所有该类的实例共享相同的静态变量的值。静态变量在内存中只有一个副本,无论类实例化多少次,它们都指向相同的内存空间。

class Example {static int count = 0; // 静态变量Example() {count++; // 每创建一个实例,count 加一}
}

2. 静态方法(Static Methods):

静态方法属于类,不依赖于类的实例而直接通过类名调用。静态方法不能直接访问类的非静态成员,因为它们在类加载时就已经存在,而非静态成员需要在对象实例化后才能访问。

class Example {static void staticMethod() {System.out.println("This is a static method.");}
}

3. 静态代码块(Static Initialization Block):

静态代码块用于初始化类的静态变量,只在类加载时执行一次,比如静态变量的初始化或者静态方法的调用。

class Example {static {// 静态代码块System.out.println("Static block initialized.");}
}

4. 静态内部类(Static Inner Class):

静态内部类是声明为静态的内部类,不依赖于外部类的实例而可以直接通过类名访问。静态内部类不能访问外部类的非静态成员,只能访问静态成员。

class Outer {static class Inner {void display() {System.out.println("Static inner class.");}}
}

2-final关键字

  • final关键字 : 翻译中文代表最终的意思 , 是java的一个关键字 也是一个修饰符 , 可以修饰类 , 可以修饰方法 , 也可以修饰变量

  • final关键字修饰的特点

    • final修饰的类 : 不能被继承 , 没有子类(太监类)

    • fina修饰的方法 : 不能被重写

    • final修饰的变量

      • 基本数据类型 : 值不能改变

      • 引用数据类型 : 地址不可发生改变 , 对象的属性可改变

      • 注意 :

        • 被final修饰的变量 , 我们叫做自定义常量 , 命名规范 : 每个字母需要大写 , 多个单词之间用下划线分割

        • final修饰成员变量需要注意初始化时机的问题 , 1) 直接赋值 , 2) 在构造方法执行完毕前赋值

1. final 变量:

当应用于变量时,final 表示该变量只能被赋值一次。一旦赋值后,其值就不能再改变。final 变量必须在声明时或者在构造方法中进行初始化。

class Example {final int constantValue = 10; // 声明时初始化final double PI;Example() {PI = 3.14; // 在构造方法中初始化}void method() {final int localVar = 5; // 局部变量也可以声明为final// localVar = 10; // 编译错误,final变量无法重新赋值}
}

2. final 方法:

当应用于方法时,final 表示方法不能被子类重写(override)。这种约束有助于确保方法的行为在继承层次结构中保持一致性和完整性。

class Parent {final void finalMethod() {// 这个方法不能被子类重写}
}class Child extends Parent {// 编译错误,无法重写final方法// void finalMethod() { }
}

3. final 类:

当应用于类时,final 表示该类不能被继承。这种设计主要用于确保类的完整性和安全性,防止子类对其进行修改或扩展。

final class FinalClass {// 这个类不能被继承
}// 编译错误,无法从final类派生子类
// class ChildClass extends FinalClass { }

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • redis数据库
  • ER模型理论和三范式
  • Infinitar链游新发展新机遇
  • 探索Qt的QVariant:灵活的数据交换机制
  • 无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages
  • (十六)视图变换 正交投影 透视投影
  • vue3.0(十六)axios详解以及完整封装方法
  • 【React】React18 Hooks 之 useReducer
  • C++--智能指针
  • 洛谷 数学进制 7.9
  • C++八股(五)之Linux常用命令
  • Linux内核 -- 内存管理之scatterlist结构使用
  • 实现了 ApplicationContextAware 接口的bean可以接收到 ApplicationContext 的引用
  • 面试经典 150 题
  • 深入理解 Qt 的 `moveToThread`:提升多线程应用性能的关键
  • [nginx文档翻译系列] 控制nginx
  • [NodeJS] 关于Buffer
  • 2018一半小结一波
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • C++类中的特殊成员函数
  • CSS 三角实现
  • Date型的使用
  • Electron入门介绍
  • SQLServer之索引简介
  • Webpack 4 学习01(基础配置)
  • webpack4 一点通
  • 编写高质量JavaScript代码之并发
  • 第十八天-企业应用架构模式-基本模式
  • 订阅Forge Viewer所有的事件
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 网页视频流m3u8/ts视频下载
  • 微服务入门【系列视频课程】
  • 新书推荐|Windows黑客编程技术详解
  • 学习ES6 变量的解构赋值
  • 云大使推广中的常见热门问题
  • mysql面试题分组并合并列
  • 如何在招聘中考核.NET架构师
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Java基础复习笔记 第16章:网络编程
  • #07【面试问题整理】嵌入式软件工程师
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $.each()与$(selector).each()
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (70min)字节暑假实习二面(已挂)
  • (ibm)Java 语言的 XPath API
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (三)elasticsearch 源码之启动流程分析
  • (五)c52学习之旅-静态数码管
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • *ST京蓝入股力合节能 着力绿色智慧城市服务