java静态代码块

news2024/10/7 10:17:51

 

在 Java中,每个类都有一个静态的代码块,用来描述类的构造函数和实例变量。在 java. util. Static中定义了一个静态代码块,在该代码块中,类的构造函数和实例变量都是不可以被修改的。 一个类包含了由它自己定义的静态代码块,也可以包含其它类中定义的静态代码块。在一个类中,不能创建与该类同名的静态代码块。 静态代码块通常被用来描述类的构造函数和实例变量,它在类被创建时就已经存在了。静态代码块一般不能被实例化,除非它通过 new来创建。因为静态代码块是不可以被实例化的,所以不能将静态代码块作为一个类来使用。

  • 1、静态代码块

    静态代码块是类的构造函数和实例变量的引用,它与类的实例变量一样,都是不能被修改的,只是它被初始化或被释放时才能被访问。 当一个类没有静态代码块时,会在类的生命周期结束后自动释放其构造函数和实例变量的引用。 在 Java中,创建一个对象时必须要调用对象的 static方法。当使用了对象 static方法之后,对象就不再是一个静态代码块,而是一个动态代码块了。因此,在使用对象 static方法创建对象时必须要在 new之后再调用它的 static方法。 在一个类中,静态代码块可能由不同类型的类来定义(例如: Cat是一个C++类,它定义了一个C++类中定义的静态代码块;而 Bat是一个 Java类,它定义了一个 Java类中定义的静态代码块)。在继承关系中定义不同类型的静态代码块,其作用是一样的。 Java中有四种不同类型的静态代码块: cat、 Btnt和 BottomCat。 cat是最常用的类型。 Bat是由 Java语言提供给外部程序调用时使用的类型。

  • 2、静态变量

    在类中定义的静态变量是不能被修改的,因为每个类都有一个静态代码块,在该代码块中,定义的静态变量不可以被修改。 静态变量分为两种: 声明型静态变量:这个类型的变量在被创建时就已经存在了,比如我们想要给一个类的成员变量 name加上一个值,那么可以定义一个类的构造函数 name=" name"。 实例型静态变量:这个类型的变量在创建时没有存在,而是在创建它的实例对象时才存在,比如我们想要给一个类的实例对象添加一个名称为 type的属性,那么可以使用这个属性名为 type=" type"。 注意:类型是一个绝对对象,所有类中的成员都是这个类型。 如何使用静态变量? 1.静态变量可以定义在类中,也可以定义在类外 2.如果类中有一个静态代码块,那么这个静态代码块是可以被实例化的。 3.在类中定义了静态变量后,为了防止其被误操作或者无意修改,需要在程序运行时初始化该变量。 4.将构造函数和实例变量初始化后就可以将它们赋值给对象。

  • 3、静态方法

    在 java中,使用静态方法来表示一个类中的对象,而不是用 class关键字来表示一个类。在使用静态方法时,应该指定方法的名称以及方法所能调用的对象。具体来说,就是应该在类中定义一个静态方法,该方法返回的是对象的实例,而不是类的实例。在类的实例变量和静态方法中定义了对象的属性和方法,它们都可以被直接使用。而对于没有定义属性和方法的静态代码块,则不能使用。因为如果一个类中没有静态代码块,那么就不会有这个类中所包含的属性和方法。 例如: java. util. Static中有一个静态代码块是 class ()。因为 class ()方法返回的是一个类的实例,所以它不能被实例化。在程序运行时, class ()方法会调用类库中提供的静态代码块来调用类中所定义的静态代码块中所定义的属性和方法。 在一个类中只有一个静态代码块时,就应该使用这个类中定义的静态代码块。对于没有定义静态代码块或没有规定静态代码块类型的类,应该使用另一个类来定义它所需要的类型。

  • 4、构造函数

    在 Java中,每个类都有一个构造函数,它是一个特殊的静态代码块。构造函数用来生成对象。 一个构造函数只能在对象被创建时执行,在运行时是无法使用的。 如果类没有定义构造函数,则编译器将使用默认的构造函数,即 Object. function ();来创建对象,因为 Object. function ()是在类创建时创建的,所以这个构造函数必须有。如果类没有定义构造函数,则编译器将使用默认的构造函数来生成对象,这会产生一个奇怪的现象:类中的对象有一个默认的构造函数。它是由编译器在运行时生成的。所以使用默认构造函数来生成对象会导致系统崩溃。但在某些情况下,如果类没有定义构造函数,则系统会自动调用默认的构造函数。

  • 5、实例变量

    Java中的实例变量是通过 new来创建的, new是一种操作符,用于创建实例变量。Java中的实例变量必须通过 new来创建,因为它没有指向类本身的指针。在一个类中定义实例变量时,必须声明这个变量是属于这个类的。在 Java中,一个实例变量是由两部分组成的:第一个部分是指向该实例变量的引用;第二个部分是这个实例变量本身。它通常被称为一个对象。Java中的所有对象都可以被看作是一个对象,所以不能直接使用 new来创建一个新的实例变量,但可以使用 new关键字来创建一个新的类。 在 Java中,所有的对象都可以被看作是一个类,因为它包含了由这个类定义的所有静态代码块和实例变量。这样就可以把一个对象看作是一个类了,而不是一个对象了。 如果一个类没有包含实例变量,则它就是一个空集。如果这个类中包含了实例变量,则它就不是空集合(因为它包含了由这个类定义的所有静态代码块和实例变量)。

  • 6、方法区

    方法区是所有方法的集合,每个类都有自己的方法区。在方法区中,被声明的类变量都是方法的参数。方法区中的成员变量是不可以被修改的。由于方法区是一个集合,因此方法区中的成员变量会有多个值。 在 Java中,对于同一类型的静态代码块,方法区中可以存在多个值。例如: 在 Java中,类实例变量可以包含两个或者更多的值。因为 Java中没有局部变量和全局变量之分,所以在方法区中不能存在多个值。但是在 Java中可以通过继承来扩展方法区,通过继承父类来扩展方法区。 从上面可以看出,每个方法都会有一个参数列表,而每个类都会有一个静态代码块。

  • java静态代码块

Java中的静态代码块是在类被加载时执行的一段代码块,它只会被执行一次。静态代码块可以用来初始化静态变量或执行一些需要在类加载时就完成的操作。
静态代码块的语法如下:
```
static {
// 静态代码块中的代码
}
```
静态代码块中的代码会在类被加载时执行,而且只会被执行一次。如果一个类中有多个静态代码块,它们会按照它们在类中出现的顺序依次执行。
下面是一个简单的例子,演示了如何使用静态代码块来初始化静态变量:
```
public class MyClass {
static int x;
static {
x = 10;
}
public static void main(String[] args) {
System.out.println("x = " + x);
}
}
```
在这个例子中,静态代码块中的代码会在类被加载时执行,将静态变量x初始化为10。在main方法中,我们输出了x的值,结果为10。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】Self-paced Multi-view Co-training

论文下载 bib: ARTICLE{MaMeng2020SPamCo, title {Self-Paced Multi-View Co-Training}, author {Fan Ma and Deyu Meng and Xuanyi Dong and Yi Yang}, journal {J. Mach. Learn. Res.}, year {2020}, volume {21}, number {1}, numpages {1--38} }目录1.…

Kubernetes中的Calico网络

文章目录1 介绍2 环境部署3 IPIP模式3.1 测试环境3.2 ping包网络转发4 BGP模式4.1 测试环境4.2 ping网络转发5 两种模式对比1 介绍 Calico网络的大概思路,即不走Overlay网络,不引入另外的网络性能损耗,而是将转发全部用三层网络的路由转发来…

GPSS【实践 01】Developing a Greenplum Streaming Server Client 自定义GPSS客户端开发实例

自定义GPSS客户端开发流程1.GPSS是什么2.架构3.组件下载安装4.自定义客户端4.1 GPSS Batch Data API Service Definition4.2 Setting up a Java Development Environment4.3 Generating the Batch Data API Client Classes4.4 Coding the GPSS Batch Data Client4.4.1 Connect …

【论文笔记】Attention Augmented Convolutional Networks(ICCV 2019 入选文章)

目录 一、摘要 二、介绍 三、相关工作 卷积网络Convolutional networks: 网络中注意力机制Attention mechanisms in networks: 四、方法 1. 图像的自注意力Self-attention over images: 二维位置嵌入Two-dimensional Positional Enco…

redis 第一章

开始学习redis 之旅吧 关于redis 的介绍 redis 是一个开源的软件,可以存储结构化的数据在内存中,像内存数据库,缓存、消息中间件、流处理引擎。 redis 提供的数据结构像strings, hashes, lists, sets, sorted sets 。Redis具有内置复制、Lua…

《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战

ChatGPT是一款能和人类聊天的机器人,它可以学习和理解人类语言,也可以帮人们做一些工作,比如翻译、写文章、写代码等。ChatGPT很强大,让很多人感兴趣,也让很多人担心。 使用ChatGPT有一些风险,比如数据的质…

Pytorch 张量操作 Python切片操作

目录一维张量定义一维实例操作二维张量操作张量拼接-注意需要拼接的维度一定要相同广播机制更高维的演示总结YOLOv5 Focus样例参考梳理一下Pytorch的张量切片操作一维张量定义 一维向量的操作其实很像numpy一维数组,基本定义如下: 1.默认步长为1 2.起始…

HotSpot经典垃圾收集器

虽然垃圾收集器的技术在不断进步,但直到现在还没最好的收集器出现,更加不存在“万能”的收集器,所以我们选择的只是对具体应用最合适的收集器。 图 HotSpot中的垃圾收集器,连线表示可搭配使用 1 Serial收集器 是最基础、历史最悠…

第08章_面向对象编程(高级)

第08章_面向对象编程(高级) 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 关键字:static 回顾类中的实例变量(即非static的成员变量) c…

linux文件类型和根目录结构

目录 一、Linux文件类型 二、Linux系统的目录结构 1. FHS 2. 路径以及工作目录 (1)路径 (2)工作目录 一、Linux文件类型 使用ls -l命令查看到的第一个字符文件类型说明-普通文件类似于Windows的记事本d目录文件类似于Windo…

【GPT4】GPT4 创作郭德纲姜昆相声作品的比较研究

欢迎关注【youcans的 AIGC 学习笔记】原创作品 说明:本文附录内容由 youcans 与 GPT-4 共同创作。 【GPT4】GPT4 创作郭德纲姜昆相声作品的比较研究研究总结0. 背景1. 对 GPT4 创作的第 1 段相声的分析2. 对GPT4 创作的第 2 段相声的分析3. 对GPT4 创作的第 3 段相…

Window常用命令

一、快捷键 1、自带快捷键 序号快捷键作用1windowsGXBOX录屏2cmd >osk屏幕键盘3cmd >calc计算器4cmd >mrt恶意软件删除工具 2、浏览器快捷键 序号快捷键作用1Alt P浏览器图片下载(来自油猴脚本) 二、其他功能 1、解决端口占用 第一步&…

Linux安装单细胞分析软件copykat

Linux安装单细胞分析软件copykat 测试环境 Linux centos 7R 4.1.2minconda3天意云24C192GB安装步骤 新建环境 conda activate copykatconda install r-base4.1.2 安装基础软件 checkPkg <- function(pkg){return(requireNamespace(pkg, quietly TRUE))}if(!checkPkg("…

类的加载过程-过程二:Linking阶段

链接过程之验证阶段(Verification) 当类加载到系统后&#xff0c;就开始链接操作&#xff0c;验证是链接操作的第一步。 它的目的是保证加载的字节码是合法、合理并符合规范的。 验证的步骤比较复杂&#xff0c;实际要验证的项目也很繁多&#xff0c;大体上Java虚拟机需要做…

基于stable diffusion的艺术操作

下面是作者基于stable diffusion的艺术操作 得益于人工智能的强大技术 以下所有的图 绝对是整体星球上唯一的图 现在人工智能越来越强大&#xff0c;感觉将来最有可能取代的就是摄影师、中低级的程序员、UI设计师、数据分析师等&#xff0c;人们未来更多从事的职业应该是快速…

机器学习 01

目录 一、机器学习 二、机器学习工作流程 2.1 获取数据 2.2 数据集 2.2.1 数据类型构成 2.2.2 数据分割 2.3 数据基本处理 2.4 特征工程 2.4.1什么是特征工程 2.4.2 为什么需要特征工程(Feature Engineering) 2.4.3 特征工程内容 2.5 机器学习 2.6 模型评估 2.7 …

【消息队列】细说Kafka消费者的分区分配和重平衡

消费方式 我们直到在性能设计中异步模式&#xff0c;一般要么是采用pull&#xff0c;要么采用push。而两种方式各有优缺点。 pull &#xff1a;说白了就是通过消费端进行主动拉去数据&#xff0c;会根据自身系统处理能力去获取消息&#xff0c;上有Broker系统无需关注消费端的…

Windows GPU版本的深度学习环境安装

本文记录了cuda、cuDNN的安装配置。 参考文章&#xff1a; cuda-installation-guide-microsoft-windows 12.1 documentation Installation Guide :: NVIDIA cuDNN Documentation 一、cuda安装 注意事项&#xff1a; 1、cuda安装最重要的是查看自己应该安装的版本。 表格…

Java数组打印的几种方式

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

独立看门狗(IWDG)实验

独立看门狗简介 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环&#xff0c; 看门狗电路就是为了避免这种情况的发生 。IWDG&#xff08;Independent watchdog&#xff09;独立看门狗&#xff0c;可以用来检测并解决由于软件错误导致的故障&#xff0c;当计数器…