java中代码块之静态代码块和非静态代码块

article/2025/9/1 16:08:49

一、代码块:
语法:使用{}包裹的,可以在{}中写代码。
修饰符:static 或者不修饰。
static修饰的为静态代码代码块。
格式:

 //静态代码块,随着类的加载児执行static{System.out.println("这是静态代码块");}

不修饰的为非静态代码块:

//非静态代码块,随着类的加载,随着对象的创建而执行{System.out.println("我是一个非静态代码块");}

静态代码块和非静态代码块的加载和执行有区别,其中静态代码块在类的加载的时候就执行了,非静态代码块在对象的创建时才会执行,每创建一个对象就会执行一次。
举个例子:

package com.netease;
/*
* 代码块和内部类
* 作用:用来初始化类和对象,所以也叫做初始化块
* 修饰符:static或者不修饰
* 静态代码块和非静态代码块:
*
* */
public class Main {public static void main(String[] args) {// write your code hereString desc = Person.desc;Person p1 = new Person();Person p2 = new Person();}
}class Person{String name;int age;static String desc = "我是一个人";//构造器public Person(){}public Person(String name, int age){this.name = name;this.age = age;}//静态代码块,随着类的加载児执行static{System.out.println("这是静态代码块");}//非静态代码块,随着类的加载,随着对象的创建而执行{System.out.println("我是一个非静态代码块");}//方法public void eat(){System.out.println("吃饭");}@Overridepublic String toString(){return "Person [name=" + name + ",age=" + age + "]";}
}

执行结果:

这是静态代码块
我是一个非静态代码块
我是一个非静态代码块

在main方法中第一句是创建一个变量并且初始化的值是类的静态变量,此时就会加载类,加载类就会去执行一次静态代码块。
第二句和第三句均是创建一个对象,可以看到输出了两次非静态代码块的内容。说明没创建一个对象就会执行一次非静态代码块。

再想想,如果再创建一个变量,并赋值为类变量,会不会再去执行一次静态代码块?
在这里插入图片描述
执行结果:

这是静态代码块
我是一个非静态代码块
我是一个非静态代码块

可以看到不会,说明静态代码块只会执行一次。而非静态代码块会在每次创建一个对象时执行一次。

那么按照修饰符把代码块分为了静态代码块和非静态代码块,从上面的实验也能够看出他们的作用是不一样的。那么他们都有什么作用呢?使用场景是什么?
二、代码块的作用
静态代码块:初始化类的信息
非静态代码块:可以在创建对象时,初始化对象的信息,即对对象的属性等进行初始化。

三、补充
代码块在一个类中可以定义多个代码块,执行顺序按照声明的顺序进行执行。
静态代码块的执行要早于非静态代码块。因为静态代码块是随着类的加载而执行。
静态代码块中只能调用静态属性和方法,不能调用非静态的。
非静态的可以调用静态属性和方法,非静态属性和方法。

通常情况下,只定义一个。。。。


http://chatgpt.dhexx.cn/article/l2B1TiRV.shtml

相关文章

Java~~静态代码块

1. 可以使用static关键字来定义“静态代码块”: (1)语法格式: static{ java语句; } (2)静态代码块在类加载时执行,并且只执行一次。 (3)静态代码块在一个类…

java非静态代码块和静态代码块介绍

代码块 SE.10.0…02.28 非静态普通代码块:定义在方法内部的代码块,不用任何关键字修饰,又名构造代码块、实例代码块 静态代码块:用static修饰的代码块 非静态代码块 public class Test {public static void main(String[] args…

static静态代码块

static静态代码块 public class Person {// 静态代码块:在类加载时候执行静态代码块,只会执行一次static {System.out.println("Person.static initializer");}// 实例初始化块,每次调用构造方法之前首先调用实例初始化块{System.out.println…

java静态代码块

今天涉及到一个表需要加字段来关联另一张表的需求,考虑到项目已经上线,这个表又跟很多表联系,就想到了使用静态代码块去new一个Map来存放关联的字段,当然这是少量数据的表,大表的话还得考虑创建字典表了。 public sta…

静态代码块

在Java类中,使用static关键字修饰的代码块称为静态代码块 当类被加载的时候,静态代码块就会被执行 由于类只会加载一次,所以静态代码块只会执行一次 在程序当中,使用静态代码块对类的成员变量进行初始化 package qmfx2; publi…

代码块(静态代码块和非静态代码块)(重难点)

1 基本介绍 代码化块又称为初始化块,属于类中的成员[即是类的一部分],类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。 但和方法不同,没有方法名,没有返回,没有参数,只有方法体&#xff…

分布式与集群的区别是什么?

在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已…

分布式和集群的架构套路总结

本文成于2020年3月14日 参考:原文 文章目录 分布式和集群名词解释使用分布式的心路历程常见的分布式集群架构1. 纯负载均衡形式(集群方向)2. 领导选举型(分布式方向)3. 区块链型(分布式方向)4. master-slaver型(分布式方向)5. 规则型一致性Hash 分布式和集群名词解释…

分布式和集群的区别是什么?

分布式是指将不同功能,或不同地点,或拥有不同数据的多台计算机通过网络连接起来,由控制系统统一管理,完成大规模信息处理的计算机系统。 集群是指将多台服务器集中在一起提供同一种服务,在逻辑上可以看做是一台服务器…

集群、分布式、微服务的区别和介绍

目录 一、集群的概念 二、为什么要使用集群? 1、集群的特点 2、集群的优势 3、集群分类及不同分类的特点 三、集群分类介绍 1、负载均衡集群 2、高可用性集群 3、高性能计算集群 四、集群与分布式区别 1、分布式图解 2、集群模式图解 五、分布式与微服…

理解分布式和集群的区别

简单理解: 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 一句话,就是:“分头做事”与“一堆人”的区别 图文理解: 详细理解&#x…

什么是分布式和集群?

漫小画 擅长漫话 程小员 擅长编程 某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来。 上次他们都说你给我讲的面向对象太简单了。 那你想怎样?为什么我一玩游戏你就过来问…

分布式和集群区别与分布式的应用场景

分布式是指将一个业务拆分不同的子业务,分布在不同的机器上执行,集群是指多台服务器集中在一起,实现同一业务,可以视为一台计算机,一个云计算平台,就是通过一套软件系统把分布式部署的资源集中调度使用。要…

java集群和分布式 区别_集群和分布式的区别?

集群和分布式有什么区别? 分布式系统: 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作…

分布式和集群的区别

分布式和集群的区别 分布式 分布式就是将多台服务器集中在一起,每台服务器都实现总体中的不同业务。每台服务器都缺一不可,如果某台服务器发生宕机了,则网站的 部分功能缺失,将导致整体无法运行。 分布式存在的作用主要是将应用…

php常用换行代码

文章目录 一、""二、"\n" 记录一下php换行的代码书写 一、"</br>" "<br/>"浏览器显示换行&#xff0c;源代码显示<br/>例&#xff1a; <?php echo "Test"."<br/>"; echo "one…

php不换行显示,php中\n不换行

本文俺将跟大家介绍两个解决办法。 原因 PHP中默认输出的文档格式是text/html&#xff0c;在html文件中识别\n为空格。 解决办法 办法一 设置content-type 显示的将content-type设置为text/plain&#xff0c;注&#xff1a;设置后将不能使用html标签。 例&#xff1a; /** * 犀…

php 保存文件并换行,php是怎样向文件中写入换行_后端开发

php向文件中写入换行的要领是&#xff1a;1、在变量【$filename】背面加上“\r\n”&#xff1b;2、在代码中写入【file_put_contents($filelist&#xff0c;$filename“\r\n”&#xff0c;FILE_APPEND)】函数。 PHP写文件换行的体式格局 直接在字符串背面加"\r\n"不行…

php换行替换,php怎么替换回车换行

php替换回车的方法&#xff1a;1、使用语句“str_replace(array("/r", "/n", "/r/n"), "", $string);”&#xff1b;2、利用正则表达式&#xff1b;3、通过语句“$str str_replace(PHP_EOL,)”。 PHP替换回车换行的三种方法 一个小小…

关于PHP中echo换行问题

前提&#xff1a;在 PHP 中仅双引号支持字符串转义“\” 但是我发现即使是双引号&#xff0c;\n也没有正常换行 echo "hello \n world";首先&#xff0c;PHP没有任何问题&#xff0c;成功将转移换行符\n解析出来&#xff0c;最初还以为PHP不兼容\n这个语法呢。 检查…