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

【面试干货】Static关键字的用法详解

【面试干货】Static关键字的用法详解

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


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

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

1、Static修饰内部类

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

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

2、Static修饰方法

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

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时分配内存,并且只分配一次。

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

4、Static修饰代码块

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

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.lryc.cn/news/388991.html

相关文章:

  • 软件工程实验
  • 对于复杂的网页布局,如多列布局和网格布局,CSS 有哪些最佳实践和技巧?
  • Spring Boot中集成Redis实现缓存功能
  • arco disign vue 日期组件的样式穿透
  • 【深度学习】pytorch训练中的一个大坑
  • python全局解释器锁(GIL)
  • 无人机的起源
  • 专题六:Spring源码之初始化容器BeanFactory
  • 缓存双写一致性(笔记)
  • 运动馆预约管理系统设计
  • 第五届计算机、大数据与人工智能国际会议(ICCBD+AI 2024)
  • 高效的向量搜索算法——分层可导航小世界图(HNSW)
  • 【MySQL备份】Percona XtraBackup全量备份实战篇
  • 港口危险货物安全管理人员考试题库(含答案)
  • 什么是 JVM( Java 虚拟机),它在 Java 程序执行中扮演什么角色?
  • Python容器 之 列表--下标和切片
  • Docker 运行Nacos无法访问地址解决方法
  • Stable Diffusion 商业变现与绘画大模型多场景实战
  • [CocosCreator]CocosCreator网络通信:https + websocket + protobuf
  • 并发控制-事务的调度、数据不一致问题(更新丢失、脏读、不可重复读)、非串行调度的的可串行化
  • Golang | Leetcode Golang题解之第202题快乐数
  • 算法:哈希表
  • 自然语言处理基本知识(1)
  • Java中的数据加密与安全传输
  • UG NX二次开发(C++)-根据草图创建拉伸特征(UFun+NXOpen)
  • TS_开发一个项目
  • 2024年华为OD机试真题-传递悄悄话 -C++-OD统一考试(C卷D卷)
  • eclipse基础工程配置( tomcat配置JRE环境)
  • Spring Boot 学习第八天:AOP代理机制对性能的影响
  • Linux[高级管理]——Squid代理服务器的部署和应用(传统模式详解)