java-类初始化

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战) 本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。 阅读详情

类初始化时机

遇到new ,getstatic,putstatic,或invokestatic 这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。

这4条指令最常见的java代码场景是:

使用new关键字实例化对象的时候。

读取或设置一个类的静态字段(被final修饰,已在编译期把结果放入常量池的静态字段除外)

使用java.lang.reflect包的方法对类进行反射调用时候,如果类没有进行过初始化,则需要先触发其初始化。

当被始化一个类的时候,如果发现其父类还没初始化,则先触发其父类初始化。

(接口除外,接口在初始化时,并不要求其父接口全部都完成了初始化,只有在真正使用父接口的时候才会初始化)

包含main方法的执行类。


对于上面这4种会触发类进行初始化的行为,称为对一个类进行主动引用。

除此之外,所有引用类的方式都不会触发初始化,称为被动引用。


下面是被动引用的三个例子。


public class SuperClass {
    static {
        System.out.println("super class init");
    }
    public static int value=123;
}
public class SubClass extends SuperClass{
    static {
        System.out.println("sub class init");
    }
}
/**
 * 非主动引用类的字段演示
 */
public class NotInitialization {
    public static void main(String[] args) {
        System.out.println(SubClass.value);
    }
}

输出结果:

super class init
123

-----------------------------------------------------------------

package com.phl.reference.passive;

/**
 * 非主动引用:通过数组来引用,不会触发类的初始化
 */
public class NotInitialization2 {
    public static void main(String[] args) {
       SuperClass [] scs=new SuperClass[10]; //没有输出
    }
}
这里没有输出,说明没有触发类com.phl.reference.passive.SuperClass的初始化 ;
但是这段代码触发另外一个类名为 [com.phl.reference.passive.SuperClass 的初始化,
对于用户来说,这并不是一个合法的类名称,这是由虚拟机自动生成的。
-------------------------------------------------
public class ConstantClass {

    static {
        System.out.println("ConstantClass class init");
    }

    public static final String HELLOWORD="hello world";
}
/**
 * 常量在编译阶段会存入调用类
NotInitialization3
的常量池中,本质上没有直接引用定义常量的类ConstantClass,因此不会被触发类的初始化
其实就是在编译阶段ConstantClass.HELLOWORD已经被替换了,替换的值放在NotInitialzaion3的常量池中
 
*/public class NotInitialization3 { public static void main(String[] args) { System.out.println(ConstantClass.HELLOWORD); // 不会输出"ConstantClass class init" }}


【数字图像处理第四版课后习题答案】第2章 数字图像基础(含英文原版) 如图 P2.3 所示,视网膜图像中与点相对应的直径 x 是由类似的三角形得到的。即得出 x = 0.085d。根据第 2.1 节中的讨论,并结合一些自由解释,我们可以将眼窝视为一个方形传感器阵列,拥有大约 337,000 个元素,这相当于一个大约 580×580 个元素的阵列。假设元素间距相等,则在 1.5 毫米长的直线上有 580 个元素和 579 个空间,共计 1,159 个。换句话说,如果一个点的直径 d<1.3×10-6 m,或者 d<15.3×10 m,眼睛就无法检测到这个点。 阅读详情

相关推荐

Codex VS Claude Code 全面测评!代码开发到底选谁?

评测结果6项指标(设计质量、提示遵从度、响应式、代码质量、细节关注、惊喜度)虽未公布最终赢家,但实测本身已揭示两工具在前端任务上的直接差异。Codex基于OpenAI的云沙箱架构,API通过全球CDN分发,但在国内直连时,依赖特定网络环境。:纯终端工具,直接在你的iTerm或终端中运行,不新建窗口、不切换上下文,与本地开发环境无缝融合。GPT-5.3 Codex(xhigh)输入$1.75/百万token,输出$14.00/百万token,混合均价约**$4.81/百万token**。

Jedudu的博客 3091

java 类初始化 机制_Java类初始化过程详解

qq123 2018年09月07日 452 0测试3个内容:1.类加载顺序2.子父类执行过程3.对象初始化过程从几次试验我们看到1.当执行到类时,类被加载到内存,并初始化2.静态成员被加载到共享区3.不用实例化对象就可以调用静态资源4.静态成员变量,静态成员方法,静态代码块,只初始化一次5.而普通变量,普通代码块,构造方法,在每次实例化对象时都要初始化6.子类对象要初始化时,会先初始化父类静态成员...

weixin_42361478的博客 416

服务器报错:“Unhealthy status reported by this UEFI driver without specific error message”.. 记录解决过程

服务器开机报错:Unhealthy status reported by this UEFI driver without specific...

ayychiguoguo的博客 4399

java类什么时候初始化_java类什么时候初始化?

Java虚拟机规范中并没有进行强制玉树什么情况下需要开始类加载过程。但是对于初始化阶段,虚拟机规范则是严格规定了有且仅有5种情况必须立即对类进行“初始化”(而加载,验证,准备自然需要在此之前开始):1.遇到new,getstatic,putstatic,或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这四条指令单最常见的Java代码场景是:使用new...

weixin_36409041的博客 567

FOC项目知识点总结三 | 完全搞懂 Clarke 与 Park 变换(附动图,仿真文件以及详细讲解数学推导过程)

本文目的,最终可以完整推算两种变换 Clarke 变换 首先先看我们需要用到的两种坐标系 1. 自然坐标系 abcabcabc 我们知道,通过三相逆变电路,我们可以画出一个自然坐标系 abcabcabc ,即三相电压的坐标系,通入的电流在这三轴坐标系中变化: 将三个矢量相加合并在一起就如下图所展现: 使用三个坐标轴来表示十分的麻烦与不直观,因为其是非正交的,于是乎我们想要将其转化成使用两个正交的坐标轴来表示,于是乎便有了 Clarke变换。 Clarke 变换的作用: 将基于三轴二维的定子静止坐标系的各

Wilson Huang的博客 3万+

手动以及使用torch.nn实现前馈神经网络实验

手动以及使用torch.nn实现前馈神经网络 手动实现前馈神经网络解决上述回归、二分类、多分类任务 利用torch.nn解决上述回归、二分类、多分类任务 在多分类任务中使用至少三种不同的激活函数 对多分类任务中的模型评估隐藏层层数和隐藏单元个数对实验结果的影响

m0_52910424的博客 9373

ConcurrentHashMap 底层实现原理

ConcurrentHashMap 底层实现原理

快乐的小三菊的博客 426

Ubuntu 20.04下Cube-Studio云原生平台单机部署全攻略(附避坑指南)

本文详细介绍了在Ubuntu 20.04系统上单机部署Cube-Studio云原生平台的完整流程,包括环境准备、Docker配置、Rancher与Kubernetes集群部署以及Cube-Studio核心组件安装。特别提供了官方文档未涵盖的实战技巧和常见问题解决方案,帮助开发者高效完成部署并避免常见陷阱。

weixin_29313423的博客 466

jvm四:常量的本质含义以及助记符基本认识

package com.atChina.jvm; /* * 常量在编译阶段会存入到调用这个常量的方法所在的类的常量池中, * 本质上,调用类并没有直接引用到定义常量的类,因此并不会触发 * 定义常量的类的初始化, 因此也就不会执行静态代码块的代码 * * 如下代码: 常量f="刘备",存放到了Test2的常量池中,之后Test2与Father2就没有任何关系了 * 甚至,我们可以删除F...

m0_37564426的博客 367

深入剖析QWEN 2.5模型架构:从GQA到RoPE的技术实现

本文深入解析了QWEN 2.5模型架构,重点介绍了其创新的GQA(分组查询注意力)和RoPE(旋转位置编码)技术实现。通过详细代码解读,展示了这些技术如何提升模型的计算效率和长文本处理能力,适用于代码生成和数学推理等任务。文章还提供了实践部署建议和调优经验,帮助开发者更好地应用这一先进模型。

weixin_42548816的博客 390

EtherCAT主站教程3--适配伺服驱动器(模式配置)

目前通用的伺服驱动器的位置模式、速度模式以及其他模式是伺服系统中常见的控制模式,切换这些模式通常需要根据具体的伺服驱动器型号和控制协议(如EtherCAT、CANopen、Modbus等)进行配置。以下是这些模式的概述及切换方法的一般性指导:协议规范中,一共有以下几种模式:其中模式1、3、6对于比较常用,也更容易上手。

weixin_52626887的博客 794

编译期常量与运行时常量

常量大家都不陌生,但如果你一听到这个词,脑袋里就只能想得起来”常量不可修改“的话,那你就得好好往下读一读了。

Rhine 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java类初始化_Java类的初始化

Java类的初始化我们知道一个类(class)要被使用必须经过装载,连接。初始化这种过程。以下先对这三阶段做一个简单的描写叙述。之后会结合一个简单的样例来说明java中类的初始化过程。在装载阶段,类装载器(Bootstrap ClassLoader 或者用户自己定义的ClassLoader) 把编译形成的class文件加载内存。创建类相关的Class对象,这个Class对象封装了我们要使用的类的类...

weixin_42401178的博客 2723

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java 类的初始化

Java类的初始化   我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程。下面先对这三阶段做一个简单的描述,之后会结合一个简单的例子来说明java中类的初始化过程。   在装载阶段,类装载器(Bootstrap ClassLoader 或者用户自定义的ClassLoader) 把编译形成的class文件载入内存,创建类相关的Class对象,这个Class对象封装

KevinJom的专栏 3万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JAVA类初始化顺序总结

类的初始化 {#articleHeader1} 初始化顺序 首先来看下,当一个类从main入口方法,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序: public class ClassLoadTest { private static User user = new User(); static { System.err.println("static code block...

luoyoub的博客 1万+

Java类的初始化

Java类的初始化   我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程。下面先对这三阶段做一个简单的描述,之后会结合一个简单的例子来说明java中类的初始化过程。   在装载阶段,类装载器(Bootstrap ClassLoader 或者用户自定义的ClassLoader) 把编译形成的class文件载入内存,创建类相关的Class对象,这

Java 攻城狮~~ 1499

java类的初始化

类的初始化

JCLWIN2017的博客 1222

java类什么时候初始化_java什么时候发生类的初始化

会发生类初始化的情况(5点)1.虚拟机启动时,初始化main方法所在的类。2.调用类的静态成员(final修饰除外),静态方法。3.new一个类的对象4.初始化一个类,其父类先被初始化,下面一个例子概括前4点public class Text {static {System.out.println("main类被加载!");}public static void main(String[] arg...

weixin_33410492的博客 269

什么时候进行java类的初始化

当java程序首次通过下面6中方式来使用某个类或接口时,系统就会初始化该类或接口。     (1)创建类的实例。为某个类创建实例的方式包括:使用new操作符来创建实例,通过反射来创建实例,通过反序列化的方式来创建实例。     (2)调用某个类的类方法(静态方法)。     (3)访问某个类变量或为某个类变量。或为该变量赋值     (4)使用反射方式来强制创建某个类或接口对应的java.

Mr_monkey95512 1179

Java中类的初始化

这个阶段才真正开始执行java代码,静态代码块和设置变量的初始值为程序员设定的值 主动引用 有且只有下面5种情况才会立即初始化类,称为主动引用: 第一种:遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化。生成这四条指令最常见的Java代码场景是:使用new关键字实例化对象时、读取或设置一个类的静态字段(s...

882

JAVA 类的初始化

类的初始化 之前的一篇文章是讲述的对象的初始化,这篇文章讲一讲类的初始化,以及类的初始化和对象初始化之间的一些异同。 首先同对象初始化一样,要搞清楚什么时候会进行类的初始化,和对象初始化不同,对象初始化的时候是new创建一个对象的时候,java会为对象进行初始化;而类的初始化进行的时机是:类第一次被使用的时候进行初始化,而且类的初始化只进行一次。 类被使用有三个情况:(1)、new 类名()

dingzepeng97的博客 338

java如何初始化类对象_Java中的类和对象初始化

java如何初始化类对象 Java中的类和对象必须在使用前进行初始化。 您之前已经了解到 ,在加载类时,将类字段初始化为默认值,并且通过构造函数初始化了对象,但是还有更多要初始化的内容。 本文介绍了Java的所有用于初始化类和对象的功能。 下载 获取代码 下载本教程中示例应用程序的源代码。 由Jeff Friesen为JavaWorld创建。 如何初始化Java类 在探讨Ja...

cxu0262的博客 2024

java类和对象的初始化

JAVA类与对象的初始化JVM通过加装、连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用。类型的生命周期如下图所示: 类的初始化和对象的初始化(类的实例化、创建一个对象)是两个不同的事情,类的初始化在类的实例化之前。 1类的初始化 类初始化阶段,主要是为类变量(静态变量)赋予正确的初始值。这里的“正确”初始值指的是程序员希望这个类变量所具备的起始值。一个正确的初始值是通

chenmeng930601的博客 2420

java类初始化顺序

一个Java类中会定义各种变量、方法和代码块。其中方法和代码块从存在的意义上来讲,都是为了操作这些变量的。所以就笔者个人理解,类的主体该是变量,方法和代码块是为变量而存在的。 变量值的改变有两种情形,一是在进行初始化的时候,而是在方法中对其进行操作的时候。变量值改变的先后顺序将直接影响到程序运行的正确与否,所以理正确理解变量值在Java中如何改变对于一个优秀码农来说,显得尤为重要。就以上两种

Mr_Leixiansheng的博客 550
上一篇: javascript-this
下一篇: java-编译openJdk
aBOUNTWINTER
博客等级 码龄16年 42粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值