Java中static修饰的静态变量、方法及代码块的特性与使用

Java中static修饰的静态变量、方法及代码块的特性与使用

1. 静态变量

静态变量是属于类的变量,可以通过类名或者对象名来访问。静态变量的特点是在内存中只有一个副本,被类所有的实例共享。定义静态变量的格式为:static dataType variableName。

静态变量的使用示例:

public class Dog {
    private String name;
    private static int count = 0;

    public Dog(String name) {
        this.name = name;
        count++;
    }

    public static int getCount() {
        return count;
    }
}

public class Test {
    public static void main(String[] args) {
        Dog dog1 = new Dog("Maya");
        Dog dog2 = new Dog("Buddy");
        System.out.println(Dog.getCount());
    }
}

上面的代码中,count是一个静态变量,表示创建的狗的数量。每当创建一只狗的时候,静态变量count的值会加1。在main方法中,通过Dog.getCount()方法获取创建的狗的数量,打印出来。

2. 静态方法

静态方法属于类的方法,不需要创建类的对象就可以直接调用。静态方法不能访问非静态变量和非静态方法,只能访问静态变量和静态方法。定义静态方法的格式为:static dataType methodName()。

静态方法的使用示例:

public class MathUtil {
    public static int max(int a, int b) {
        return a > b ? a : b;
    }
}

public class Test {
    public static void main(String[] args) {
        int max = MathUtil.max(5, 7);
        System.out.println(max);
    }
}

上面的代码中,MathUtil类中定义了一个静态方法max,可以获取两个数的最大值。在main方法中,可以通过MathUtil.max(5, 7)来获取5和7中的最大值,输出结果为7。

3. 静态代码块

静态代码块是属于类的代码块,用于在类加载的时候执行一些操作。静态代码块只会执行一次,且在类被加载的时候执行。定义静态代码块的格式为:static { //code }。

静态代码块的使用示例:

public class Test {
    static {
        System.out.println("static code block executed");
    }

    public static void main(String[] args) {
        System.out.println("main method executed");
    }
}

上面的代码中,定义了一个静态代码块,在类被加载的时候会执行。在main方法中,打印出一条信息,表示main方法被执行。执行程序后,会先打印出静态代码块的信息,再打印出main方法的信息。

总结

静态变量、静态方法和静态代码块都属于类的成员,是被所有实例共享的,而不是属于某个实例。静态变量和静态方法可以通过类名或者对象名来访问,静态代码块会在类被加载的时候执行。在程序设计中,静态变量、静态方法和静态代码块能够提高程序的性能,也方便我们对类的管理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中static修饰的静态变量、方法及代码块的特性与使用 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Android启动页出现白屏、黑屏的解决方案

    对于Android应用程序来说,启动页是用户打开应用程序时的第一个页面,是展示应用程序品牌形象和个性化特点的重要组成部分。然而,很多情况下在应用程序启动时会出现白屏或黑屏的情况,给用户的使用体验带来了不良影响,因此,引起了很多 Android 开发者的关注。下面我们将详细介绍 Android 启动页出现白屏、黑屏的解决方案。 问题的根源 在 Android …

    other 2023年6月26日
    00
  • 完美解决浏览器跨域的几种方法(汇总)

    完美解决浏览器跨域的几种方法(汇总) 在本攻略中,我们将详细讲解几种解决浏览器跨域问题的方法,并提供两个示例说明。 什么是跨域? 跨域是指在浏览器中,当一个网页的脚本试图访问另一个网页的内容时,由于浏览器的同源略,会出现访问被拒绝的情况。同源策略是浏览器的一种安全机制,它限制了一个网页的脚本只能访问同源的内容,即协议、域名和端口号都相同的网页。 解决跨域的几…

    other 2023年5月8日
    00
  • [持续更新]安卓6.0/Android M开发者预览版3更新内容大全

    持续更新安卓6.0/ Android M开发者预览版3更新内容大全 简介 本文章主要介绍安卓6.0/ Android M开发者预览版3更新的详细内容。该预览版的更新主要是对先前版本的一些已知问题的修复和一些新增功能的添加。本文将会列举这些修改和新增功能,并对其中重要的信息进行一些补充和解析。 更新内容 1. 权限控制 Android M相对于以前的版本,在权…

    other 2023年6月26日
    00
  • js中Array.sort()利用零值多维排序

    首先我们要知道,Array.sort()方法是按照Unicode码点对数组进行排序的,它的默认排序顺序是将元素转换为字符串,然后比较它们对应字符的Unicode码点值。 那么,在js中,我们可以利用Array.sort()方法实现多维排序,其具体操作步骤如下: 1.以排序维度为键名对数组进行排序 假设我们现在有一个二维数组,其中包含了商品的销售信息,如下: …

    other 2023年6月25日
    00
  • 为什么snmp通常在udp而不是tcp/ip上运行?

    以下是关于“为什么SNMP通常在UDP而不是TCP/IP上运行”的完整攻略,包含两个示例。 为什么SNMP通常在UDP而不是TCP/IP上运行? SNMP(Simple Network Management Protocol)是一种用于管理和监控网络设备的协议。通常,SNMP在UDP(User Datagram Protocol)而不是TCP/IP(Tran…

    other 2023年5月9日
    00
  • 深入理解bootstrap框架之入门准备

    深入理解Bootstrap框架之入门准备 1. 简介 Bootstrap是一个流行的开源前端框架,能够轻松地构建响应式、现代化的网站和Web应用程序。在开始深入理解Bootstrap框架之前,你需要进行一些入门准备。 2. HTML和CSS基础知识 在学习Bootstrap之前,你需要对HTML和CSS有一定的了解。HTML用来定义网页的结构,而CSS用来控…

    other 2023年6月28日
    00
  • python通过函数属性实现全局变量的方法

    Python通过函数属性实现全局变量的方法 在Python中,函数属性可以用来实现全局变量的效果。函数属性是指函数对象的属性,可以在函数内部定义,并在函数外部访问。通过将变量作为函数属性,可以在函数调用之间保持变量的状态,实现全局变量的效果。 下面是实现全局变量的方法的详细攻略: 步骤1:定义函数并设置函数属性 首先,我们需要定义一个函数,并在函数内部设置函…

    other 2023年7月29日
    00
  • Perl内置特殊变量总结

    Perl内置特殊变量总结攻略 Perl是一种功能强大的编程语言,它提供了许多内置的特殊变量,这些变量在编写Perl脚本时非常有用。本攻略将详细介绍Perl内置特殊变量的用法和示例。 1. $_变量 $_是Perl中最常用的特殊变量之一。它是默认的输入和模式匹配变量。当没有指定变量时,Perl通常会使用$_。下面是一个示例: while (<STDIN&…

    other 2023年7月29日
    00
合作推广
合作推广
分享本页
返回顶部