static与代码块

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0) 本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。 阅读详情

一、static

(一)static 成员

被 static 修饰的成员称为静态成员,也叫类成员。它不属于某个具体的对象,而是被该类的所有对象共享,且在方法区中只有一份。

(二)static 修饰成员变量
  • 静态成员变量是类的属性,不属于某个特定对象,所有对象都共享这一份静态成员变量。
  • 访问方式:既可以通过对象(对象名.静态成员变量)访问,也可以通过类名(类名.静态成员变量)访问,推荐使用类名访问,更能体现其类成员的特性。
  • 生命周期:与类的生命周期一致,从类加载开始,到类卸载结束。
(三)static 修饰成员方法
  • 静态成员方法也叫类方法,属于类而不是某个对象。
  • 调用方式:可以通过类名(类名.静态方法名(参数))调用,也可以通过对象调用,但更推荐类名调用。
  • 限制:
    • 静态方法中不能直接访问非静态成员变量,因为非静态成员变量属于对象,而静态方法不依赖于对象。
    • 静态方法不能直接调用非静态方法,因为非静态方法隐含 this 参数(代表当前对象),静态方法调用时无法传递 this 引用。
    • 静态方法不能被重写,因此也不能用来实现多态(多态依赖于方法重写,而静态方法是类级别的,子类的静态方法与父类的静态方法是隐藏关系,并非重写)。
(四)static 成员变量初始化
  • 就地初始化:在定义静态成员变量时直接赋予初始值,如 static int num = 10;。
  • 构造方法初始化:一般不推荐,因为构造方法是创建对象时调用的,而静态成员变量属于类,类加载时就已存在,若在构造方法中给静态成员变量赋值,每次创建对象都会执行,不符合静态成员共享的特性。
  • 通过 get/set 方法初始化:在需要的时候,调用类的 get 或 set 方法来设置静态成员变量的值。
  • 代码块初始化:静态代码块在类加载时执行,适合用来初始化静态成员变量,例如:
class MyClass {
    static int num;
    static {
        num = 20;
    }
}
(五)补充知识点
  • 静态成员属于类,不依赖于对象,所以访问静态成员时不需要创建对象,也不需要对象的引用。
  • 静态方法中不能使用 this 关键字,因为 this 代表当前对象的引用,而静态方法与对象无关。
  • 非静态方法中可以直接调用静态方法,因为静态方法属于类,可直接通过类访问。
  • 在静态方法中,若要使用非静态成员变量或方法,必须先创建对象,然后通过对象引用进行调用。

二、代码块

(一)普通代码块

定义在方法内部的代码块,用 {} 直接包裹代码。其中声明的变量作用域仅限于该代码块内部,出了代码块就无法访问。例如:

public void test() {
    {
        int num = 10;
        System.out.println(num); // 输出 10
    }
    // System.out.println(num); // 编译报错,num 超出作用域
}
(二)构造代码块

又称实例代码块,定义在类内部,没有任何修饰符的 {} 代码块。它会在每次创建对象时执行,且执行时机在构造方法之前,主要用于初始化实例成员变量。例如:

class Person {
    String name;
    int age;
    // 构造代码块
    {
        name = "默认名称";
        age = 18;
    }
    public Person() {
        System.out.println("构造方法执行");
    }
}
// 创建对象时,先执行构造代码块初始化 name 和 age,再执行构造方法
Person p = new Person();
(三)静态代码块

用 static 修饰的代码块,定义在类内部、方法外部。它主要用于初始化静态成员变量,因为静态成员变量是类的属性,在 JVM 加载类时就会开辟空间并进行初始化。

  • 当类被加载时,静态代码块会被执行;如果有多个静态代码块,会按照定义的顺序依次执行。
  • 类只会被加载一次,所以静态代码块也只会被执行一次。例如:
class MyClass {
    static int num;
    static {
        num = 10;
        System.out.println("静态代码块1执行");
    }
    static {
        System.out.println("静态代码块2执行,num = " + num);
    }
}
// 类加载时,静态代码块1先执行,然后静态代码块2执行
(四)同步代码块

同步代码块是为了解决多线程环境下的线程安全问题,使用 synchronized 关键字来修饰,格式为 synchronized(锁对象) { // 同步执行的代码 }。通过锁机制,保证同一时刻只有一个线程能执行同步代码块内的内容。例如:

public class SyncDemo {
    private Object lock = new Object();
    public void method() {
        synchronized (lock) {
            // 同步执行的代码,避免线程安全问题
        }
    }
}
(五)执行顺序

在类的加载和对象创建过程中,代码块的执行顺序为:静态代码块 → 构造代码块 → 构造方法。即类加载时先执行静态代码块,之后每次创建对象时,先执行构造代码块,再执行构造方法。

    游戏战斗系统架构设计的演绎之路——从一坨意大利面条到一座精密钟表 摘要:游戏战斗系统架构设计的演进之路 本文系统梳理了游戏战斗系统从早期街机到现代3A大作的架构发展历程。70-80年代的街机游戏采用基础碰撞盒判定(如《街头霸王》);90年代实现动画融合与状态机架构(《最终幻想》《拳皇》);2000年后MMO引入服务器验证与同步技术(《魔兽世界》);3D时代融合物理引擎与智能AI(《GTA5》《只狼》);移动端则发展出轻量化架构与云端判定(《王者荣耀》)。现代战斗系统已实现模块化、数据驱动和热更新,未来趋势是AI裁判与云战斗系统。这一演进过程展现了技术与创意的完美结合,数百 阅读详情

    相关推荐

    vivado运行时报错 license文件更新操作

    vivado使用:SYNTHESIS->Run Synthesis 时报错 [Common 17-345] A valid license was not found for feature ‘Synthesis’ and/or device ‘xc7vx485t’. Please run the Vivado License Manager for assistance in determiningwhich features and devices are licensed for your sy

    qq_44692266的博客 2万+

    static修饰代码块

    概述 : 被static修饰的代码块,就叫做静态代码块 静态代码块:定义在成员位置,使用static修饰的代码块{ }。 位置:类中方法外。 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。 public class Student { static { // 静态代码块 System.out.println("静态代码块执行了....

    baidu_39603432的博客 666

    正直摄影方式的精度估算式_利用BDS数据反演大气可降水量及其精度分析

    可降水量(PWV)对中小尺度灾害性天气预报具有指示意义,是降雨强度预报的重要参数之一。自20世纪80、90年代起,国外已经对GPS探测大气可降水量进行了大量研究。国内最早由毛节泰引进并详细介绍了地基GPS反演大气可降水量的方法,近年来发展迅速并取得了一定的成果。随着中国北斗卫星导航系统(BDS)提供服务并不断地建设完善,其已经能够应用到气象学领域,可以获得大气可降水量。文献[11]利用...

    weixin_39796752的博客 1246

    static--修饰代码块

    按照位置和修饰符将Java程序代码块分为3种:①普通代码块,成员方法中的代码块称为普通代码块;②构造块,类中的代码块称为构造块;③静态构造块,static修饰的构造块称为静态构造块。JVM加载类时仅执行一次静态构造块,如果类体中包含多个静态构造块,JVM按照它们在类体的顺序依次执行,每个静态构造块仅被执行一次。每次实例化对象时,JVNM按照构造块出行的顺序依次加载,即每个构造块将被加载多次。实例化对象是JVM加载静态构造块、构造块和构造方法流程如下。

    2302_80292629的博客 233

    ADC学习(3)——采样电路

    第三章 采样电路

    夏风喃喃的博客 3万+

    物联网技术-第2章-物联网技术架构

    • 物联网具有很强的异构性• 为实现异构设备之间的互联、互通与互操作,物联网需要以一个开放的分层的可扩展的为框架。

    m0_73804764的博客 2977

    [java/初学者]static修饰的静态变量、方法及代码块的特性与使用

    static关键字表示“静态的”,可以用来修饰类的变量、成员方法和代码块等。被其修饰的类成员具有一些特殊性,下面将介绍static所修饰的静态变量、静态方法和静态代码块的特性和用法。

    DuFengYa的博客 3199

    面向业务角色的 SAP Fiori Space 与 Page 创建全流程实战指南

    业务角色导航设计:从Space与Page规划到实施 摘要:本文探讨了SAP S/4HANA Cloud和BTP ABAP环境中基于业务角色的导航设计方法。传统Fiori Launchpad的Group+Tile模式存在应用堆积问题,而新的Space与Page模型将导航按工作领域(如应付会计、销售代表)组织,每个Space包含多个任务导向的Page。文章详细介绍了从业务角色建模到Space/Page创建、分配的完整流程,包括核心概念解析、规划思路和具体操作步骤。重点阐述了如何根据业务需求选择创建方式(基于预交

    2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

    Java类的static成员以及代码块(详细版)

    在Java的类中一般定义有成员属性,以及成员方法两种,但实际上两种可以算为一类,但还可以定义另外一种,就是被static修饰的变量和方法,被static修饰的变量称之为静态变量,也可以叫类变量;被static修饰的方法被称之为静态方法,也可以叫类方法。被static修饰的成员,最大的特性就是其不属于对象,不依靠对象,这也就意味着被static修饰的成员在没有实例化对象的情况下就可以使用,被static修饰的成员其属于类,是所有对象所共享的,可以直接使用类名访问并调用。

    L326214的博客 2024

    问答式AI vs 智能体(Agent):它们有什么不同?

    你肯定用过 ChatGPT 或文心一言——问它一个问题,它给你一个答案。AI Agent(AI智能体)。很多人搞不清楚:它们不都是"AI"吗?有什么区别?这篇文章用一个最简单的类比,彻底讲清楚这两者的本质差异。框架特点适合人群AutoGPT完全自主执行任务,链式思考开发者MetaGPT模拟团队协作,多角色分工开发者LangChain最流行的Agent开发框架开发者Dify可视化无代码搭建Agent非技术用户Coze(扣子)字节跳动出品,国内最易用普通用户WorkBuddy。

    Johnny2004的专栏 448

    基于DSIFT多尺度图像融合的MATLAB代码

    多尺度图像融合是一种常用的图像处理技术,它可以将具有不同尺度和空间频率特征的图像融合成一幅更具信息丰富度和视觉效果的图像。DSIFT算法是一种基于SIFT算法的改进版本,它在提取图像特征时采用了密集采样的方法,能够有效地提取图像的局部特征。多尺度图像融合基于DSIFT算法的思想,通过在不同尺度下提取图像的DSIFT特征,并将这些特征进行融合,得到最终的融合图像。然后,通过DSIFT算法提取了两幅图像的特征。通过运行上述代码,我们可以在MATLAB中实现基于DSIFT多尺度图像融合的算法,并观察到融合结果。

    IELLQUI9的博客 181

    static应用知识:代码块

    static应用知识:代码块

    南辞的博客 5215

    视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

    Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

    盼小辉丶的博客 722

    Static静态代码块以及各代码块之间的执行顺序

    前言 在Java中,Static静态代码块、构造代码块、普通代码块、构造函数的执行顺序是一个java学习者必须掌握的基础,本篇博客旨在让大家能清除了解它们之间的执行顺序。 文章目录代码块的分类1、静态代码块(也叫静态块、静态初始化块)2、构造代码块(也叫构造初始化块)3、代码块(又叫普通代码块、初始化块)执行顺序的代码测试继承中各代码块的执行顺序 代码块的分类 基本上代码块分为三种:Static静...

    宜春 2万+

    jdk-8u144-linux-x64.tar.gz.

    该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

    假人有限元模型

    假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

    详解:普通代码块和static代码块

    普通代码块定义:在方法、循环、判断等语句中出现的代码块,通常用花括号{}包围。位置:可以出现在方法体内除()外的任何地方,包括方法体内部、循环体内部、判断语句内部等。static代码块定义:在类中定义并使用static关键字修饰的代码块。位置:它不能出现在方法体或者其他代码块内,只能位于类体中。普通代码块:随着对象的创建而执行,用于初始化实例变量或执行一些需要在对象创建时进行的操作。每次创建对象都会执行一次。static代码块。

    阿鹏的博客 1547

    VB摄像头监控

    该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

    static关键字和代码块

    本文介绍了Java中static关键字和代码块的相关知识。static用于修饰成员变量和方法,被static修饰的静态成员属于类而非对象,存储在方法区且全局共享。静态方法不能直接调用非静态成员,但非静态方法可以调用静态成员。代码块部分讲解了普通代码块和静态代码块,静态代码块主要用于静态成员变量的初始化。文章通过具体代码示例展示了static的应用场景和注意事项,帮助读者理解这一重要概念。

    2401_84935454的博客 785

    霍尼韦尔SoftMaster使用说明

    霍尼韦尔SoftMaster使用说明

    《static关键字和代码块》

    通过调试得到初始化对象我们并没有得到classRoom的值是因为静态变量属于类而不是类的某个对象。构造块:定义在类中的代码块(不加修饰符)。3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者。使用static定义的代码块称为静态代码块。2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问。静态方法也属于类而不是对象,可以直接通过类名调用,无需创建变量。

    m0_73881123的博客 798

    static成员与代码块

    JavaSE-static成员与代码块

    m0_74365243的博客 422

    Java中的static成员+代码块

    Java static成员 代码块 静态代码块 示例代码块 普通代码块 代码块执行顺序

    2301_79958614的博客 1310

    static关键字与代码块

    文章目录static关键字与代码块一、static关键字1、静态属性2、静态方法二、代码块1、普通代码块2、构造代码块3、静态代码块 static关键字与代码块 一、static关键字 static是一个用于声明程序结构的关键字,意为“静态的”,此关键字可以用于全局属性和全局方法,主要特点是可以避免对象实例化的限制,在没有实例化对象的时候直接进行此类结构的访问。 1、静态属性 在一个类中,主要的组成就是属性和方法,而每一个对象都分别拥有各自的属性内容(不同对象的属性保存在堆内存的不同地址中)。 如果想要类中

    Window_mouse的博客 1万+

    java中static代码块_static怎样在java中修改代码块?

    代码是我们每个学编程的小伙伴都接触的内容,在代码块的修改上有很多方法,那么在java中又需要使用哪种方式来对代码块进行变动呢?哦们最近在学关键字的版块,其中有一个static用来修饰代码块的效果非常不错。下面小编就它的特性、代码块介绍带来讲解,最后我们一起试着用static修改代码块。1.特性static是一个修饰符,用于修饰成员。(成员变量,成员函数)static修饰的成员变量 称之为静态变量或...

    weixin_33464176的博客 565

    static和代码块小总结

    第一次使用博客记录总结static和代码块小总结过程当时代码(简化)整个简化代码(只有统计实例化次数)加入static之后代码(只加static 其余代码不变)代码块构造代码块 static和代码块小总结 因为当时有同学问题目是说:如何在new对象的时候,new一个,系统自动+1?解决问题的时候,就有了static和代码块的一点点了解 过程 然后我就去找了一下资料和高年级的学长,利用static和...

    小海同学的博客 218

    this,static关键字,代码块

    this关键字 谁调用了这个方法,这个方法里的this就指向谁 class Person{ int age; Person(int age){ //构造方法 this.age=age; //此处的this.age指的就是上面的int age } boolean compare(Person p){ //定义了一个变量类型为boolean的方法用来比较大小 return...

    ATT 183

    final static Map 与static 代码块加载的顺序

    方法的调用顺序依赖于 Java 类的初始化流程。类被加载到 JVM 中。已经初始化完毕,返回。

    Blue_Pepsi_Cola的博客 567

    Java中static关键字和代码块的学习

    本文介绍了Java中static关键字的使用,即静态成员变量和成员方法以及使用,静态与非静态成员变量和方法的对比总结 Java中的代码块介绍与最后结合代码块和构造方法后的初始化代码执行顺序的练习

    记录并分享学习编程时的知识点... 2180

    static和代码块

    Static关键字 作用域:可以修饰成员变量和成员方法 特点: 。随着类的加载而加载 。优先于对象存在 。被类的所有对象共享(这是判断是否使用静态关键字的条件) 。可以通过类名调用 public class myDemo {       static String name;   public static void main(String[] args) { System

    zm13319249591的博客 232
    上一篇: Java类和对象
    下一篇: Java-内部类
    Akos01
    博客等级 码龄1年 7粉丝 12原创
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

    当前余额3.43元 前往充值 >
    需支付:10.00元
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付元
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值