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. 类中可以有多个构造函数,但只能有一个静态块,而且它通常只用于静态变量的初始化。

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

阅读剩余 60%

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

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

相关文章

  • jQuery中nextUntil()方法用法实例

    当你需要在 jQuery 中选取元素的时候,通过 nextUntil() 方法可以轻松地选取两个特定元素之间的所有元素。该方法返回元素集合对象。 语法 $(selector).nextUntil(stopSelector, filter) 参数: stopSelector:必选,元素的终止选择器,选取元素的末尾位置。 filter:可选,用于筛选元素的选择器…

    Java 2023年6月15日
    00
  • Java实现从字符串中找出数字字符串的方法小结

    Java实现从字符串中找出数字字符串的方法小结 有时候我们需要从一个字符串中提取数字串,可以使用Java中的正则表达式来实现。 正则表达式 正则表达式是一种用来描述字符串模式的语言。可以用来匹配、查找等操作。 匹配数字 用正则表达式来匹配数字的方式有以下几种: \d:表示匹配任意数字字符(0-9)的字符 [0-9]:表示匹配0-9中的任意一个数字字符 Jav…

    Java 2023年5月27日
    00
  • Java中MultipartFile与File互转的实现

    Java中MultipartFile和File是常用的文件类型,其中MultipartFile多用于上传功能,而File则是在本地操作文件时经常使用。有时候我们需要将MultipartFile类型的文件转换为File类型,或者将File类型的文件转换成MultipartFile类型,接下来我将详细讲解实现这一过程的攻略。 MultipartFile转换成Fi…

    Java 2023年5月19日
    00
  • 一篇文章读懂Java哈希与一致性哈希算法

    一篇文章读懂Java哈希与一致性哈希算法 1. 哈希算法基础 在计算机科学中,哈希算法是将任意长度的消息映射到固定长度的摘要 (或称哈希值) 的函数,也就是根据某种规则,将任意数据映射到指定大小范围的数值上,一般用于唯一性标识、数据校验等场景。 Java提供了多种哈希算法,比如MD5、SHA1、SHA256等,这些哈希算法的实现已经被封装在Java的类库中的…

    Java 2023年5月19日
    00
  • Java 按行读取文件按行写入文件并以空格分割字符串的方法

    要实现Java按行读取文件并以空格分割字符串的方法,可以使用以下步骤: 使用Java中的BufferedReader类读取文件中的每一行数据。 将每一行数据使用Java中的String类的split方法按照空格分割成字符串数组。 将分割后的字符串数组转换为每个元素带空格的字符串,并写入到输出文件中。 以下是两个示例: 示例一: 假设有input.txt文件内…

    Java 2023年5月27日
    00
  • JDBC链接mysql插入数据后显示问号的原因及解决办法

    下面是关于“JDBC链接mysql插入数据后显示问号的原因及解决办法”的完整攻略。 问题描述 在使用JDBC链接mysql进行数据插入的过程中,有时候插入的数据中含有中文字符,但是插入成功后查询数据时会发现,中文字符会被显示为问号“?”。这是为什么? 问题原因 这种情况主要是因为mysql数据库中的表采用了默认的字符集编码方式,即latin1,而我们插入的中…

    Java 2023年6月16日
    00
  • Java日常练习题,每天进步一点点(57)

    题目:求一个二叉树的右下角结点的值。 思路 先按照层次遍历的方式,遍历整棵树,将每一层最后一个结点的值保存下来,最后返回最后一层的最后一个结点的值即可。 代码实现 private int lastVal = 0; public int findBottomLeftValue(TreeNode root) { // 用队列保存待遍历的结点 Queue<T…

    Java 2023年5月23日
    00
  • 深入学习Java编程中的字符串的进阶使用

    深入学习Java编程中的字符串的进阶使用 Java中的字符串是程序中常用的数据类型之一,学习好字符串的使用可以极大地提高程序的处理能力,本文将深入学习Java编程中字符串的进阶使用。 1. 字符串创建 首先我们来看字符串的创建,Java中我们可以使用以下三种方式来创建字符串: 1.1 直接赋值 String str = "hello world&q…

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