首页 > 编程语言 >Java之static静态代码块和方法

Java之static静态代码块和方法

时间:2024-08-23 16:22:45浏览次数:11  
标签:Java 变量 静态 实例 static 静态方法 public

文章目录

一:static关键字

  • 用于定义类级别的属性和方法,这些属性和方法属于类本身,而不是类的任何特定实例对象
  • static 修饰的方法或变量,优先于对象执行,所以内存会先有 static修饰的内容,后有对象的内容
  • static关键字有两个主要的应用场景
    • 静态变量(也称为类变量)
    • 静态方法(也称为类方法)
    • 还有一个重要的概念是静态代码块(也称为静态初始化块)
    • 修饰变量就是类变量,修饰方法就是类方法
    • 类变量或者类方法,可以直接通过类名.方法名或者类名.变量名进行调用,不用经过对象
package chapter5;

public class Student {
    // 静态变量
    static int age;
    static String name;

    // 静态方法
    public static void  sleep(){
        System.out.println("睡觉");
        System.out.println("age : "+age);

    }
}

二:静态变量

  • 是类级别的变量,它们在类的所有实例之间共享,在内存中只有一个副本,无论创建多少个类的实例。
  • 静态变量通常用于存储那些与类本身相关,而与类的任何特定实例无关的信息。
  • 静态变量在类的加载阶段被初始化,并且只能使用类名来访问它们(而不是实例名)。
public class MyClass {  
    // 静态变量  
    public static int staticVar = 42;  
  
    // ... 其他代码 ...  
}  
  
// 访问静态变量,以下格式为类名.变量名  
int value = MyClass.staticVar;

三:静态方法

  • 是类级别的方法,它们不需要类的实例就可以被调用。
  • 静态方法不能直接访问类的非静态成员(变量和方法),因为它们属于类的特定实例。
  • 静态方法通常用于执行那些与类本身相关,而与类的任何特定实例无关的操作。
  • 静态方法可以使用类名来调用,而不是通过类的实例。
public class MyClass {  
    // 静态方法  
    public static void staticMethod() {  
        System.out.println("This is a static method.");  
    }  
  
    // ... 其他代码 ...  
}  
  
// 调用静态方法  
MyClass.staticMethod();

四:静态代码块

  • 是一段在类加载时自动执行的代码,通常用于初始化静态变量或执行其他只需要执行一次的类级别的操作。
  • 静态代码块在类的准备阶段(在类的初始化阶段之前)被执行,并且只执行一次,无论创建多少个类的实例。
  • 在类中的位置可以是任意的,但通常放在类的顶部,它们不能包含任何参数,并且没有返回值。
public class MyClass {  
    // 静态变量  
    public static int staticVar;  
  
    // 静态代码块  
    static {  
        staticVar = 42;  
        System.out.println("Static block executed.");  
    }  
  
    // ... 其他代码 ...  
}  
  
// 当类被加载时,静态代码块会被执行  
// 静态变量会被初始化,并且会输出 "Static block executed."

五:总结

  • 静态变量是类级别的变量,在类的所有实例之间共享。
  • 静态方法是类级别的方法,不需要类的实例就可以被调用。
  • 静态代码块是在类加载时自动执行的代码块,通常用于初始化静态变量或执行其他只需要执行一次的类级别的操作。
  • 静态方法不能直接访问非静态变量,静态方法当中不能使用this
  • 重点:一个类里面 static修饰的不能访问非static修饰的成员或方法,而非static修饰的可以访问static修饰的成员或者方法

标签:Java,变量,静态,实例,static,静态方法,public
From: https://blog.csdn.net/weixin_44348521/article/details/141467575

相关文章

  • 【JavaScript系列】认识浏览器
    一、浏览器的工作原理1.1域名与IP地址1.2入口文件index.html二、认识浏览器内核2.1什么是浏览器内核2.2常见的浏览器内核三、浏览器渲染整体过程3.1HTML的解析过程3.2解析生成CSS规则3.3构建RenderTree3.3.1注意事项......
  • 【JavaScript系列】原型继承和原型链
    原创IT知识一享原型继承在JavaScript中,每个函数都有一个特殊的属性叫做prototype(原型)。当你用new关键字来创建一个对象实例时,这个实例会自动关联到构造函数的prototype上。constPerson=function(firstName,birthYear){this.firstName=firstName;this.bi......
  • 01JavaScript
    JavaScript基础-第1天了解变量、数据类型、运算符等基础概念,能够实现数据类型的转换,结合四则运算体会如何编程。体会现实世界中的事物与计算机的关系理解什么是数据并知道数据的分类理解变量存储数据的“容器”掌握常见运算符的使用,了解优先级关系知道JavaS......
  • 2024最新的Java八股文合集来了,彻底解决一线大厂面试难题
    Java提供的多态机制?Java提供了两种用于多态的机制,分别是重载与覆盖。重载:重载是指同一个类中有多个同名的方法,但这些方法有不同的参数,在编译期间就可以确定调用哪个方法。覆盖:覆盖是指派生类重写基类的方法,使用基类指向其子类的实例对象,或接口的引用变量指向其实现类的实......
  • java中的Collections
    Java的集合框架(CollectionsFramework)提供了一组标准的数据结构接口和类,用于存储和操作数据。Java集合类位于java.util包中,主要包括以下几个核心接口和实现类。1.核心接口1.1.Collection接口Collection是集合框架的根接口,但它本身并不提供任何直接实现。常见的子......
  • Java语言程序设计——篇十六
           ......
  • JAVA实现文件分片上传、大文件秒传
    该说不说,最近这块挻火的。今天早上有网友加我微信,也是咨询这块的技术问题,最近不知道啥情况,加我的网友还是挻多的。实际上我的微信很早就在网上公开了,但是还是有很多网友说找不到。昨天晚上论坛里面有位网友发私信给我,聊了一下这个问题,这个网友是一个自由职业者,他也是刚开始......
  • 基于Java+Vue的采购管理系统:提高决策效率(项目源码)
       前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保供......
  • java+vue计算机毕设汽车租赁信息管理系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和人们生活水平的提高,汽车租赁服务作为一种便捷、灵活的出行方式,正逐渐受到广大消费者的青睐。然而,传统的汽车租赁管理方式往往......
  • java+vue计算机毕设建筑项目管理系统的设计与实现【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着建筑行业的快速发展,项目管理的复杂性和规模性日益凸显。传统的手工或基于简单软件的项目管理方式已难以满足现代建筑企业高效、精准、透明的管理......