java static块和构造函数的实例详解

Java中的static块和构造函数都是用来初始化类的成员变量的,但两者有着不同的特点和应用场景。下面详细讲解static块和构造函数的用法及其区别。

一、static块

1.1 定义

在Java中,static块是一个静态代码块,用来初始化静态成员变量。在类加载时,如果类中有static块,则首先会执行static块,然后才会执行其他代码块和构造函数。

1.2 语法

格式如下:

static{
    // 初始化代码
}

1.3 示例

下面例子中, static块用于初始化静态成员变量count:

public class StaticBlockDemo {
    static int count;
    static {
        count = 0;
        System.out.println("执行了静态块");
    }
    public StaticBlockDemo() {
        count++;
        System.out.println("执行了构造函数");
    }
    public static void main(String[] args) {
        System.out.println("count=" + StaticBlockDemo.count);
        StaticBlockDemo s1 = new StaticBlockDemo();
        System.out.println("count=" + StaticBlockDemo.count);
        StaticBlockDemo s2 = new StaticBlockDemo();
        System.out.println("count=" + StaticBlockDemo.count);
    }
}

输出结果为:

执行了静态块
count=0
执行了构造函数
count=1
执行了构造函数
count=2

在类被加载时,先执行静态块中的初始化代码,然后执行main函数中的代码,最后执行构造函数。初始化代码中将count初始化为0,在构造函数中每次都会将count加1。因此,在执行构造函数时,count值分别为1和2。

二、构造函数

2.1 定义

构造函数是一种特殊的方法,用来初始化类的对象。在创建类的对象时,会自动地调用构造函数,并传入相应的参数。

2.2 语法

格式如下:

public class ClassName{
    public ClassName(){
        // 初始化代码
    }
}

2.3 示例

下面例子中,构造函数用于初始化对象的属性:

public class ConstructorDemo {
    String name;
    int age;
    public ConstructorDemo(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void show() {
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
    public static void main(String[] args) {
        ConstructorDemo c = new ConstructorDemo("张三", 20);
        c.show();
    }
}

输出结果为:

姓名:张三,年龄:20

在创建ConstructorDemo对象时,会调用构造函数进行初始化。构造函数将传入的name和age赋值给对象的属性name和age,然后调用show方法输出属性值。

三、static块和构造函数的区别

static块和构造函数都可以用来初始化类的成员变量,但它们有以下区别:

  1. 执行顺序不同:类加载时,static块最先执行,而构造函数在对象创建时被调用;
  2. 初始化的对象不同:static块用于初始化静态成员变量,而构造函数用于初始化普通成员变量;
  3. 类中可以有多个构造函数,但只能有一个静态块,而且它通常只用于静态变量的初始化。

因此,在使用时需要根据需要进行选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java static块和构造函数的实例详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • java中关于内部类的使用详解

    Java中关于内部类的使用详解 什么是内部类? 内部类是定义在其他类内部的类。与常规的类不同,内部类可以直接访问外部类的私有成员变量和方法,甚至可以访问外部类的私有内部类。也可以将内部类看作是外部类的成员,与普通成员变量和方法类似。 在Java中,内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。 成员内部类 成员内部类是定义在外部类中的内…

    Java 2023年5月26日
    00
  • 多个jsp页面共享一个js对象的超级方法

    要实现多个JSP页面共享一个JS对象的超级方法,可以使用以下步骤: 在JSP页面中引入公共的JS文件。 <script src="common.js"></script> 定义公共的JS对象,可以将它定义为全局变量。 var commonObj = { name: "Tom", age: 18,…

    Java 2023年6月15日
    00
  • Go Java算法之简化路径实例详解

    Go Java算法之简化路径实例详解 本篇文章将详细讲解如何使用Go和Java算法来简化路径。首先,我们需要了解路径简化的定义和目的。 什么是路径简化? 路径简化是将路径中冗余的部分删除,使其变得更短、更干净、更易读。例如,路径”/a/b/c/../d”可以简化为”/a/b/d”。这不仅可以节省存储空间,还可以提高代码的效率。 路径简化的目的 路径简化有多种…

    Java 2023年5月19日
    00
  • Struts2源码分析之ParametersInterceptor拦截器

    下面我将就“Struts2源码分析之ParametersInterceptor拦截器”的完整攻略给您讲解,全文将分别从以下几个方面展开: ParametersInterceptor介绍 ParametersInterceptor源码分析 ParametersInterceptor示例 1. ParametersInterceptor介绍 Parameters…

    Java 2023年5月20日
    00
  • 用JavaScript实现仿Windows关机效果

    当我们尝试模仿操作系统的某些效果时,如Windows关机效果,我们需要使用 JavaScript 和 CSS。下面是实现仿Windows关机效果的完整攻略。 准备工作 在开始实现之前,需要先准备好以下三个工具: 一个编辑器,如 Visual Studio Code 一个浏览器,如 Chrome 一段用于实现效果的HTML和CSS代码 实现过程 以下是实现该效…

    Java 2023年6月16日
    00
  • 线程调度的作用是什么?

    以下是关于线程调度的完整使用攻略: 线程调度的作用是什么? 线程调度是指操作系统或者虚拟机对多个线程进行调度和管理,以实现多个线程之间的作和同步。线程度的作用主要有以下几个方面: 1. 提高程序的执行效率 在多线程编程中,如果多个线同时执行,就会出现线程之间的竞争和冲突,从而影响程序的执行效率。线程调度,可以合理地分配 CPU 时间片,从而提高程序的执行效率…

    Java 2023年5月12日
    00
  • 关于maven:pom文件的使用解析

    关于Maven:POM文件的使用解析 Maven是一个流行的Java项目构建工具,其中POM文件(Project Object Model)是核心概念之一。本文将介绍POM文件的基本知识和使用方法,帮助开发人员更好地管理项目依赖和构建过程。 什么是POM文件 POM文件是Maven项目的核心文件之一,它是一个XML文档,包含了项目的各种元数据和配置信息。其中…

    Java 2023年5月20日
    00
  • 详解数据库连接的URL的写法及总结

    详解数据库连接的URL的写法及总结攻略分为以下几个部分: URL格式介绍 URL参数介绍 常用数据库URL示例 URL格式介绍 数据库连接URL的格式通常如下所示: protocol://username:password@hostname:port/databasename?option1=value1&option2=value2 其中,各部分的…

    Java 2023年6月16日
    00
合作推广
合作推广
分享本页
返回顶部