面向对象【static关键字】

请添加图片描述

文章目录

  • 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;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

刷题日记——01字符串、非素数个数(厦门大学机试)

题目1——01字符串 分析 经过拆解找规律&#xff0c;发现是两个斐波那契 那么代码就好写了呀 #include <stdio.h>unsigned long long f(int n){if(n0||n1){return n;}return (f(n-1)f(n-2))%2333333; }int main(){int n;scanf("%d",&n);printf("%…

sqllab第六关通关笔记

知识点&#xff1a; 报错注入回顾原始语句测试截取函数 mid(字符串&#xff0c;起始位置&#xff0c;长度)substr(字符串&#xff0c;起始位置&#xff0c;长度)left(字符串&#xff0c;长度)right(字符串&#xff0c;长度)加入截取控制的错误注入payload payload:id1"%2…

深度学习(十一):YOLOv9之最新的目标检测器解读

YOLOv9 1.YOLOv9:物体检测技术的飞跃发展1.1 YOLOv9 简介1.2YOLOv9 的核心创新1.2.1信息瓶颈:神经网络在抽取相关性时的理论边界1.2.2可逆函数:保留完整的信息流1.2.3对轻型模型的影响&#xff1a;解决信息丢失1.2.4可编程梯度信息 (PGI)&#xff1a;解决信息瓶颈1.2.5通用高效…

掘根宝典之C++迭代器简介

在C中&#xff0c;容器是一种用于存储和管理数据的数据结构。C标准库提供了多种容器&#xff0c;每种容器都有其独特的特点和适用场景。 我们知道啊&#xff0c;我们可以通过下标运算符来对容器内的元素进行访问&#xff0c;但是只有少数几种容器才同时支持下标运算符&#xf…

Leetcode 3.12

leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…

2024 年 2 月 NFT 行业动态:加密货币飙升,NFT 市场调整

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;NFT 研究页面 - Footprint Analytics 2024 年 2 月&#xff0c;加密货币与 NFT 市场显现出了复杂性。该月&#xff0c;NFT 领域的交易量达到 12 亿美元&#xff0c;环比下降了 3.7%。值得关注的是&#xff0c;包…

AI智能分析网关V4将HTTP消息推送至安防监控视频汇聚EasyCVR平台的操作步骤

TSINGSEE青犀视频智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。硬件管理平台支持RTSP、GB28181协议、以及厂家私有协议接入&#xff0c;可兼容市面上常…

从根到叶:深入了解Map和Set

窗间映出一片高远的天空&#xff0c; 向晚的天际宁静而又清明。 我孤独的心灵在幸福地哭泣&#xff0c; 它在为天空如此美好而高兴。 恬静的晚霞一片火红&#xff0c; 晚霞灼烧着我的热情。 此刻的世界没有别人&#xff0c; 只有上帝&#xff0c;我和天空。 ——&#x…

利用“定时执行专家”软件的25种任务与12种触发器,提升IT系统管理自动化水平

在IT系统管理中&#xff0c;自动化是提高工作效率、减少人为错误的关键。而《定时执行专家》这款软件&#xff0c;以其强大的功能、易用性和毫秒级的执行精度&#xff0c;成为了IT系统管理员的得力助手。今天&#xff0c;我们就来探讨一下如何利用这款软件的25种任务类型和12种…

【AI绘画】AI绘画免费网站推荐

人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指一种模拟人类智能的技术。它是通过计算机系统来模拟人的认知、学习和推理能力&#xff0c;以实现类似于人类智能的行为和决策。人工智能技术包含多个方面&#xff0c;包括机器学习、深度学习、自…

unity3d Animal Controller的动物组件使用明天继续

控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…

Android Kotlin知识汇总(三)Kotlin 协程

Kotlin的重要优势及特点之——结构化并发 Kotlin 协程让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理&#xff0c;例如网络调用、本地数据访问等任务的管理。本主题介绍如何使用 Kotlin 协程解决以下问题&#xff0c;从而让您能够编写出更清晰、更简洁的应用代…

Docker进阶:深入了解容器数据卷

Docker进阶&#xff1a;深入了解容器数据卷 一、前言二、容器数据卷的作用三、容器数据卷的使用方法四、实战--使用docker部署前端项目&#xff08;数据卷挂载&#xff09;4.1 重要&#xff1a;准备工作&#xff0c;先在本地创建挂载目录4.2 启动一个临时的nginx容器&#xff0…

vscode使用npm命令无反应,而终端可以的解决办法

如若你遇到这种情况 使用命令 get-command npm 去下面这个路径把它删掉就可以了

初识Spring MVC

什么是Spring MVC? 官方给的解释是 Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀开始就包含在 Spring 框架中。它的 正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为"Spring MVC" 注:Severlet是…

离线下载的pytorch/torchvision/torchaudio

链接&#xff1a;https://download.pytorch.org/whl/torch_stable.html 下载pytorch-torchvision-torchaudio等一系列一定要版本匹配&#xff0c;并且如果是在gpu上跑的话&#xff0c;一定要都是cu版本 参考链接&#xff1a;https://blog.csdn.net/AiTanXiing/article/detail…

C语言 ——关键字

关键字&#xff1a;在C语言中被赋予了特定含义的英文单词&#xff0c;一共有32个关键字 * 关键字全部小写 * 在特定的编译器中&#xff0c;关键字是高亮显示的 vs&#xff1a;蓝色或者紫色 vs&#xff1a;蓝色 下图圈起来的都是关键字 c auto break case char const con…

Codeforces Round 933 (Div. 3) --- G. Rudolf and Subway --- 题解

G. Rudolf and Subway&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 这道题很容易看出是一个最短路的图论问题&#xff0c;但是Java普通最短路常数有点高会被卡。 因为他是地铁线路&#xff0c;线路一定是一直连着的&#xff0c;不会中间断开&#xff0c;那我们可以…

Android Studio开发项目——记账簿应用

项目资源&#xff1a; 百度网盘链接&#xff1a;https://pan.baidu.com/s/1zN9lrIypi1t_QpuoBcdBNQ?pwdxj5h 提取码&#xff1a;xj5h 项目设计内容 1.基本功能描述 电子记账本是一种在线财务管理工具&#xff0c;用于帮助用户记录和管理他们的收入与支出。以下是电…

行业突破!四信实现低延时摄像头弱网状态100ms以内实时传输

随着人工智能、大数据、区块链等技术在城市中快速发展&#xff0c;人们日常生活中已经离不开网络的支撑&#xff0c;而实现“人与人”、“人与物”及“物与物”之间高速连接应用的“时延”&#xff0c;是网络支撑中最重要的存在。 以城市生活例子为例&#xff0c;当网络延时出现…