Java~~静态代码块

article/2025/9/1 16:13:24

1. 可以使用static关键字来定义“静态代码块”:

     (1)语法格式:

     static{

     java语句;

   }

(2)静态代码块在类加载时执行,并且只执行一次

(3)静态代码块在一个类中可以编写多个,并且遵循自上而下的顺序依次执行。

(4)静态代码块的作用是什么?怎么用?用在哪儿?什么时候用?

        -----这当然和具体的需求有关,例如项目中要求在类加载的时刻/时机执行代码完成日志的记录。那么这段记录日志的代码就可以编写到静态代码块当中,完成日志记录。

      -----静态代码块是java为程序员准备一个特殊的时刻这个特殊的时刻被称为类加载时刻。若希望在此刻执行一段特殊的程序,这段程序可以直接放在静态代码块当中。

  (5)通常在静态代码块当中完成预备工作,先完成数据的准备工具,例如:初始化连接池,解析XML配置文件......

代码如下:public class StaticTest {

    static {

     System.out.println("类加载-->1");

    }

    static {

     System.out.println("类加载-->2");

    }

    static {

     System.out.println("类加载-->3");

    }

public static void main(String[] args) {

}

}

    

2. 实例语句块/代码块【了解,使用少】

(1)实例代码块可以编写多个,也是遵循自上而下的顺序依次执行

(2)实例代码块在构造方法执行之前执行,构造方法执行依次,实例代码块对应执行   一次。

(3)实例代码块也是java语句为程序员准备了一个特殊的时机,这个特殊时机被称为:对象初始化时机。

代码如下:public class Test01 {

   //构造函数

public Test01() {

System.out.println("Test类的缺省构造器执行");

}

//实例代码块

{

System.out.println(1);

}

//实例代码块

{

System.out.println(2);

}

//实例代码块

{

System.out.println(3);

}

public static void main(String[] args) {

       System.out.println("main begin");

       new Test01();

       System.out.println("-----------");

       new Test01();

}

}

结果如下:main begin

1

2

3

Test类的缺省构造器执行

-----------

1

2

3

Test类的缺省构造器执行

 3. 方法什么时候定义为静态的?

        方法描述的是动作,当所有的对象执行这个动作的时候,最终产生影响是一样的,          

    那么这个动作已经不再属于某一个对象动作了,可以将这个动作提升为类级别的动作,               模板级别的动作。

    * 静态方法中无法直接访问实例变量和实例方法。

代码如下:public class StaticTest {

    //实例变量

     int i=100;

//实例方法

public void doSome() {

}

//静态方法【静态上下文】

public static void main(String[] args) {

//System.out.println(i);

//doSome();

StaticTest st=new StaticTest();

System.out.println(st.i);

st.doSome();

  }

}

  4.关于静态变量

  static 表示静态的,使用"类名."的方式即可访问,不需要创建对象,就可以调用main方法

 void表示main方法执行结束之后不返回任何值

     main是main方法的方法名

     (String[] args)是main方法形式参数列表

java中所有的变量分为:(1)成员变量和(2)局部变量。

(1)成员变量包括:

          a) 实例变量

          b)类变量(以static修饰)

区别:

     访问:实例变量是通过定义类的对象来访问。类变量可以通过类或类对象来访问。

     生存周期  :实例变量与类对象生存周期共存亡。类变量与类共存亡。

     变量修改:多个对象指向不同的实例变量堆内存,即实例变量的值只与对象相关。多个对象指向同一个类变量的堆内存,即类变量的值与类对象无关,为最后一次修改的值

例:class Animal {
    public String name;
    public static int age;    //age是类变量
}
public class Test01 {
    public static void main(String[] args) {
        //创建对象进行访问
        Animal a = new Animal();
        Animal b = new Animal();
        a.name = "大黄";
        b.name = "米奇";
        a.age = 3;
        b.age = 5;
        System.out.println(a.name );
        System.out.println(b.name );
        System.out.println(a.age);
    }
}

结果如下:

(2)局部变量

        a)形参(函数形参)

        b)方法局部变量(在方法内定义)

        c)代码块局部变量(在代码块内定义)

上述各种局部变量参数的生存周期不同。尽量使用局部作用范围小的变量,这样可以使其在程序内存中停留的时间变短,提高程序运行速度。

注:Java允许局部变量和成员变量同名,如果方法里的局部变量和成员名相同,局部变量会覆盖成员变量,若要在这个方法里使用成员变量,可使用this来调用成员变量。


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

相关文章

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这个语法呢。 检查…

php换行操作总结

作为php的初学者,常常遇到一个容易混淆的小问题, 那就是在php代码中写入\n换行操作符&#xff0c;以为在浏览器那里呈现的输出是换行&#xff0c;没想到却没有。但是写入 br 却顺利通过.导致很多初学者傻傻分不清! 其实<br>和\n都可以,为什么说都可以呢&#xff1f; 这…