面向对象【static关键字】

news2024/11/26 2:53:54

请添加图片描述

文章目录

  • Java中的static关键字
    • 1. 静态变量
    • 2. 静态方法的特点
    • 3. 静态块
    • 4. 静态导入
    • 5. 单例模式中的应用

Java中的static关键字

在Java中,static是一个关键字,用于定义类级别的成员,这些成员与类的实例无关。static成员属于类而不是类的实例,因此它们在类加载时被初始化,并且无需创建类的实例即可访问

1. 静态变量

静态变量是static关键字的一个重要用法之一。它们被用于表示类级别的数据,而不是实例级别的数据。所有类的实例共享同一个静态变量的值。

  • 静态变量的默认值规则和实例变量一样。
  • 静态变量值是所有对象共享。
  • 静态变量在本类中,可以在任意方法、代码块、构造器中直接使用。
  • 如果权限修饰符允许,在其他类中可以通过“类名.静态变量”直接访问,也可以通过
    “对象.静态变量”的方式访问(但是更推荐使用类名.静态变量的方式)。
  • 静态变量的 get/set 方法也静态的,当局部变量与静态变量重名时,使用“类名.静态
    变量”进行区分。
public class MyClass {
    // 静态变量
    static int staticVariable = 10;
    
    // 其他成员变量和方法等
}

// 使用静态变量
System.out.println(MyClass.staticVariable);

2. 静态方法的特点

  • 静态方法在本类的任意方法、代码块、构造器中都可以直接被调用。
  • 只要权限修饰符允许,静态方法在其他类中可以通过“类名.静态方法“的方式调用。也可以通过”对象.静态方法“的方式调用(但是更推荐使用类名.静态方法的方式)。
  • 在 static 方法内部只能访问类的 static 修饰的属性或方法,不能访问类的非 static 的结构。
  • 静态方法可以被子类继承,但不能被子类重写
  • 静态方法的调用都只看编译时类型。
  • 因为不需要实例就可以访问 static 方法,因此 static 方法内部不能有 this,也不能有super。如果有重名问题,使用“类名.”进行区别。
public class MyClass {
    // 静态方法
    static void staticMethod() {
        System.out.println("This is a static method.");
    }
    
    // 其他成员方法等
}

// 调用静态方法
MyClass.staticMethod();

3. 静态块

静态块是用static关键字定义的一个代码块,在类加载时执行。通常用于执行静态变量的初始化或执行一些静态的初始化操作

public class MyClass {
    // 静态块
    static {
        System.out.println("Static block executed.");
    }
    
    // 其他成员变量和方法等
}

// 类加载时,静态块被执行

4. 静态导入

静态导入是使用static关键字导入类的静态成员,使得可以直接使用静态成员而无需使用类名。

import static java.lang.Math.*;

public class MyMathClass {
    public static void main(String[] args) {
        // 使用静态导入的Math类中的静态方法
        double result = sqrt(25.0);
        System.out.println(result);
    }
}

5. 单例模式中的应用

static关键字在单例模式的实现中也经常发挥重要作用,确保只有一个类的实例存在。

public class Singleton {
    // 声明一个静态变量来保存实例
    private static Singleton instance;

    // 私有化构造方法,防止外部实例化
    private Singleton() {}

    // 提供一个公共的方法获取实例
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1511834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么查看电脑是不是固态硬盘?简单几个步骤判断

随着科技的发展,固态硬盘(Solid State Drive,简称SSD)已成为现代电脑的标配。相较于传统的机械硬盘,固态硬盘在读写速度、稳定性和耐用性等方面都有显著优势。但是,对于不熟悉电脑硬件的用户来说&#xff0…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的水下目标检测系统(深度学习模型+UI界面+训练数据集)

摘要:本研究详述了一种采用深度学习技术的水下目标检测系统,该系统集成了最新的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地识别水…

唯众物联网+地理科学交付云南师范大学地理学部教学实验室项目

近日,云南师范大学地理学部教学实验室建设项目顺利交付。该项目的成功落地,标志着物联网技术与地理科学教育的深度融合,为云南师范大学的地理教学提供了全新的教学平台与资源。该项目以物联网技术为核心,结合地理科学的特点&#…

新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析

本文整理自阿里云开源大数据平台吕宴全关于新一代实时数据集成框架 Flink CDC 3.0 的核心技术架构解析,内容主要分为以下四部分: Flink CDC 演进历程 Flink CDC 3.0 的架构设计 Flink CDC 3.0 的核心实现 未来规划 一、Flink CDC 演进历程 Flink CD…

Web——HTML

一.HTML概述 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。 二.…

相机模型Omnidirectional Camera(全方位摄像机)

1. 背景 大多数商用相机都可以描述为针孔相机,通过透视投影进行建模。然而,有些投影系统的几何结构无法使用传统针孔模型来描述,因为成像设备引入了非常高的失真。其中一些系统就是全方位摄像机。 有几种方法可以制作全向相机。屈光照相机(D…

【Linux】yum及vim

目录 在Linux中安装软件(以centos7为例) Linux中的安装方式 安装的理解 什么是软件包? yum的一般使用流程 Linux开发工具 vi/vim 什么是vi/vim? vim的三大主要模式(实际上还有很多模式,此篇不做介绍…

一款好用的AI工具——边界AICHAT(三)

目录 3.23、文档生成PPT演示3.24、AI文档翻译3.25、AI翻译3.26、论文模式3.27、文章批改3.28、文章纠正3.29、写作助手3.30、文言文翻译3.31、日报周报月报生成器3.32、OCR-DOC办公文档识别3.33、AI真人语音合成3.34、录音音频总结3.35、域方模型市场3.36、模型创建3.37、社区交…

焦点调制网络

摘要 https://arxiv.org/pdf/2203.11926.pdf 我们提出了焦点调制网络(简称FocalNets),其中自注意力(SA)被焦点调制模块完全取代,用于在视觉中建模令牌交互。焦点调制包含三个组件:(…

使用html+css制作一个发光立方体特效

使用htmlcss制作一个发光立方体特效 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Documen…

SpringController返回值和异常自动包装

今天遇到一个需求&#xff0c;在不改动原系统代码的情况下。将Controller的返回值和异常包装到一个统一的返回对象中去。 例如原系统的接口 public String myIp(ApiIgnore HttpServletRequest request);返回的只是一个IP字符串"0:0:0:0:0:0:0:1"&#xff0c;目前接口…

第五篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas在教育数据和研究数据处理领域的应用

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas 在教育和学术研究中的常见应用介绍二、数据清洗和预处理示例代码三、数据分析和统计示例代码四、数据可视化示例代码五、时间序列分析示例代码六、数据导入和导出示例代码七、数…

【数据挖掘】练习1:R入门

课后作业1&#xff1a;R入门 一&#xff1a;习题内容 1.要与R交互必须安装Rstudio&#xff0c;这种说法对不对&#xff1f; 不对。虽然RStudio是一个流行的R交互集成开发环境&#xff0c;但并不是与R交互的唯一方式。 与R交互可以采用以下几种方法&#xff1a; 使用R Conso…

Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像/录像存储和回放/264/265/aac/pcm等

一、前言 用ffmpeg做音视频保存到mp4文件&#xff0c;都会遇到一个问题&#xff0c;尤其是在视频监控行业&#xff0c;就是监控摄像头设置的音频是PCM/G711A/G711U&#xff0c;解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw&#xff0c;将这个原始的音频流保存到mp4文件是会…

【企业战略转型】某音响制造公司发展战略转型管理咨询项目纪实

案例&#xff1a;【客户评价】日本M汽车音响有限公司田总经理&#xff1a;受经济大环境的影响&#xff0c;我公司原有的依赖企业下订单的业务模式受到很大的影响&#xff0c;企业进入“不进则退”的重要转型阶段。当企业生存的关键因素&#xff0c;我们作为典型的OEM汽车音响代…

unity学习(57)——选择角色界面--删除角色2

1.客户端添加点击按钮所触发的事件&#xff0c;在selectMenu界面中增加myDelete函数&#xff0c;当点击“删除角色”按钮时触发该函数的内容。 public void myDelete() {string message nowPlayer.id;//string m Coding<StringDTO>.encode(message);NetWorkScript.get…

前端之用HTML做一个汇款单

例子 代码 里面注释是我我对运用到的知识的理解 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>工商银行电子汇款单</title> </head> <body><h3>工商银行电子汇款单</…

python疑难杂症(10)---Python函数def的定义分类,包括内置函数、外置函数、匿名函数、闭包函数、生成器函数等

本部分详细讲解Python函数的定义、常见的函数类型&#xff0c;尤其是特色函数包括内置函数、外置函数、匿名函数、闭包函数、生成器函数等以及用法。后续将对这类函数重点讲解使用方法。 函数定义&#xff1a; 函数是大多数编程语言使用的一个概念&#xff0c;函数是一段具有…

题目 2610: 第十二届省赛真题-杨辉三角形

题目描述: 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下 数列&#xff1a; 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ... 给定一个正整数 N&#xff0c;请你输出数列中第一次出现 N 是在第几…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的海洋动物检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发海洋动物检测系统对于海洋生态环境监控具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个海洋动物检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模…