Static关键字的用法详解

Static关键字的用法详解

  • 1、Static修饰内部类
  • 2、Static修饰方法
  • 3、Static修饰变量
  • 4、Static修饰代码块
  • 5、总结


💖The Begin💖点点关注,收藏不迷路💖

在Java编程语言中,static是一个关键字,它可以用于多种上下文,包括类、方法、变量和代码块。static的主要作用在于它修饰的内容是与类相关联的,而不是与类的某个特定实例(对象)相关联的。

1、Static修饰内部类

使用static修饰的内部类称为静态内部类。 静态内部类不需要外部类的实例即可创建,因此它不能访问外部类的非静态成员(变量和方法)。

java">public class OuterClass {  
    private static String outerStaticField = "Outer static field";  
  
    static class StaticNestedClass {  
        // 静态内部类中可以访问外部类的静态成员  
        public void printOuterStaticField() {  
            System.out.println(outerStaticField);  
        }  
    }  
}

2、Static修饰方法

静态方法属于类本身,而不是类的实例。 因此,它们不能访问非静态的成员(因为它们需要一个类的实例来访问),而且它们可以通过类名直接调用。

java">public class MyClass {  
    public static void staticMethod() {  
        System.out.println("This is a static method");  
    }
  
    // 主方法可以直接调用静态方法  
    public static void main(String[] args) {  
        MyClass.staticMethod(); // 无需创建MyClass的实例  
    }  
}

3、Static修饰变量

静态变量(也称为类变量)属于类,而不是类的实例。 这意味着它们被所有类的实例共享,并且只存在一份拷贝。静态变量在类被加载到JVM时分配内存,并且只分配一次。

java">public class MyClass {  
    public static int staticVar = 42;
  
    // 可以通过类名直接访问静态变量  
    public static void main(String[] args) {  
        System.out.println(MyClass.staticVar); // 输出42  
    }  
}

4、Static修饰代码块

静态代码块在类被加载到JVM时执行,并且只执行一次。 它们通常用于初始化静态变量或执行只需要执行一次的代码。

java">public class MyClass {  
    static {  
        System.out.println("Static block executed");  
    }  
  
    // 主方法会触发类的加载,因此静态代码块会被执行  
    public static void main(String[] args) {  
        // 当MyClass被加载时,静态代码块已经被执行  
    }  
}

5、总结

1、静态方法不能直接访问非静态成员(变量和方法),因为它们属于类的实例,而静态方法属于类本身。

2、在静态方法中,this和super关键字都是无效的,因为this引用当前对象,而静态方法不依赖于任何对象。

3、静态变量在内存中只有一份拷贝,并且它们的生命周期与类相同。

4、静态代码块按照它们在类中的出现顺序依次执行,并且只执行一次。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

http://www.niftyadmin.cn/n/5537176.html

相关文章

智慧生活新篇章,Vatee万腾平台领航前行

在21世纪的科技浪潮中,智慧生活已不再是一个遥远的梦想,而是正逐步成为我们日常生活的现实。从智能家居的温馨便捷,到智慧城市的高效运转,科技的每一次进步都在为我们的生活增添新的色彩。而在这场智慧生活的变革中,Va…

转型AI产品经理前需要搞懂的9个问题

笔者近10年来一直工作于AI领域技术和产品一线,今天分享9个大家普遍关注却少有人系统回答的问题。 1.下一个10年,AI产业在国内的发展和职业发展的机遇如何? 从四方面看: (1)技术角度:逐步成熟…

Spring源码十:BeanPostProcess

上一篇Spring源码九:BeanFactoryPostProcessor,我们看到ApplicationContext容器通过refresh方法中的postProcessBeanFactory方法和BeanFactoryPostProcessor类提供预留扩展点,他可以在Spring容器的层面对BeanFactroy或其他属性进行修改&#…

加速度传感器信号处理注意事项

1 传感器分类 对于压电式压力传感器而言,输出信号是最重要的选择标准之一。压电式压力传感器与电子电路相连,电子电路将传感器产生的电荷成比例转换为电压。 如果选用外部设备(电荷放大器)充当电子元件,则称其为电…

【vue】JSON数据导出excel

前言 导出方式有很多种,但是若只需要数据导出成.xlsx文件并下载的话,只用xlsx一个插件就行 目标 1 实现数据导出excel 2 如何设置表格列宽 3 如何在文件中创建工作表 准备工作 1 安装 npm i xlsx -S 2 引入 npm i xlsx -S 二、导出excel 创建文件 con…

如何计算弧线弹道的落地位置

1)如何计算弧线弹道的落地位置 2)Unity 2021 IL2CPP下使用Protobuf-net序列化报异常 3)编译问题,用Mono可以,但用IL2CPP就报错 4)Wwise的Bank在安卓上LoadBank之后,播放没有声音 这是第393篇UWA…

上海市计算机学会竞赛平台2023年2月月赛丙组平分数字(一)

题目描述 给定 𝑛n 个整数:𝑎1,𝑎2,⋯ ,𝑎𝑛a1​,a2​,⋯,an​,请判定能否将它们分成两个部分(不得丢弃任何数字),每部分的数字之和一样大。 输入格式 第…

IPsec连接 和 SSL连接

Psec和SSL连接是两种用于保障网络通信安全的技术 IPsec 通常用于连通两个局域网,主要是网对网的连接,如分支机构与总部之间,或者本地IDC与云端VPC的子网连接。适合站点间的稳定通讯需求以及对网络层安全有严格要求的场合。要求两端有固定的网…