详解JAVA中static的作用

当使用Java编写代码时,经常可以看到使用 static 关键字定义的变量、方法或类。那么,static 的作用到底是什么呢?本攻略将详细讲解 Java 中 static 的作用。

一、什么是 static

Java 中,static 是一个修饰符,当 static 用来修饰类的方法、变量或代码块时,它就与类本身关联,而非与类的实例对象关联,使得这些变量和方法可以在类被实例化前使用。

二、static 变量的作用

Java 中使用 static 关键字修饰的变量称为静态变量,也叫类变量,它与类无关,与实例对象无关。换句话说,静态变量是所有实例共享的,只会保存一份,不管被实例化多少次,都只有一份。

示例 1:计数器

public class Counter {
    public static int count = 0;

    public Counter() {
        count++;
    }
}

public class Test {
    public static void main(String[] args) {
        Counter c1 = new Counter();
        Counter c2 = new Counter();
        Counter c3 = new Counter();
        System.out.println("Count is " + Counter.count); // Output: 3
    }
}

在上面的代码中,Counter 类中的 count 变量被定义为静态变量,所有 Counter 类的对象将共享这个变量。Counter() 构造方法会在每次创建 Counter 类对象时自动调用,并且为 count 变量增加 1。当创建三个对象时,count 的值将会是 3。

示例 2:常量

静态变量也可以作为一种常量使用,声明为 final 标志符的静态变量,一旦赋初始值后,就无法再修改。

public class MathUtil {
    public static final double PI = 3.141592653589793;
}

public class Test {
    public static void main(String[] args) {
        System.out.println(MathUtil.PI); // Output: 3.141592653589793
    }
}

在上面的代码中,PI 被定义为一个静态常量,同时标识了 final 关键字。由于这是一个常量,所以它的值不能被改变,且一般会使用大写字母命名常量名称。

三、static 方法的作用

Java 中使用 static 关键字修饰的方法称为静态方法,它与类相关,而不是与实际对象相关。

与静态变量类似,静态方法也可以在被任何实例化对象之前调用。它们属于整个类而不是某个实例,因此无法引用实例变量或者实例方法。

示例 3:计算一个数的平方

public class MathUtil {
    public static int square(int num) {
        return num * num;
    }
}

public class Test {
    public static void main(String[] args) {
        int num = 5;
        int result = MathUtil.square(num);
        System.out.println(result); // Output: 25
    }
}

在上面的代码中,MathUtil 类中的 square() 方法定义为静态方法,它接收一个整数参数 num,并返回一个整数 num * num,即传入数值的平方。在 main 方法中,我们没有创建 MathUtil 类的对象,而是直接通过类名调用静态方法。

四、static 代码块的作用

Java 中使用 static 关键字修饰的代码块称为静态代码块。它只有在类加载时执行一次,所有的实例共用同一份代码块,一般用于初始化静态变量或执行初始化操作。

示例 4:输出类的信息

public class MyClass {
    static {
        System.out.println("Class loaded.");
    }
}

public class Test {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
    }
}

在上面的代码中,MyClass 类中的 static 代码块在类加载时执行一次,并输出 "Class loaded.",无论有没有被实例化,这行代码只会执行一次。

五、小结

在 Java 中,static 关键字被应用于类的变量、方法和代码块,它使这些元素与实例无关,与类相关。使用静态变量和静态方法,可以避免在程序运行时创建不必要的实例。使用静态代码块,可以在类被加载时执行代码。了解这些,可以使程序更有效率和正确。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JAVA中static的作用 - Python技术站

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

相关文章

  • win10 Build 10000编译完成 版本号突破10000

    Win10 Build 10000编译完成 版本号突破10000攻略 简介 Win10 Build 10000是Windows 10操作系统的一个开发版本,版本号突破10000代表了一次重要的里程碑。本攻略将详细介绍如何完成Win10 Build 10000的编译,并使版本号突破10000。 步骤 步骤一:准备开发环境 在开始编译之前,确保你已经准备好了以下…

    other 2023年8月3日
    00
  • 网页语言xhtml和html的概念与区别的详细介绍

    XHTML和HTML的概念与区别 概念 HTML(Hypertext Markup Language)是一种用于创建网页的标记语言,它使用标签来描述网页的结构和内容。HTML是Web开发中最常用的语言之一。 XHTML(Extensible Hypertext Markup Language)是HTML的扩展版本,它基于XML(eXtensible Mark…

    other 2023年7月28日
    00
  • 解决java.lang.ClassCastException的java类型转换异常的问题

    当在Java程序中使用类型转换时,可能会发生ClassCastException异常。此异常的发生主要是因为程序将一个无法转换成需要类型的对象强制转换为需要类型的对象。以下是解决Java类型转换异常的一些攻略: 1. 确认对象的实际类型 在进行类型转换时,请检查要转换的对象的实际类型。如果您将一个父类转换为其子类,则会出现此异常。例如: Object obj…

    other 2023年6月27日
    00
  • 如何降级cuda版本

    以下是关于如何降级CUDA版本的完整攻略,包括基本知识和两个示例说明。 基本知识 在降级CUDA版本之前,您需要了解以下基本知识: CUDA Toolkit:CUDA Toolkit是一个用于开发和优化CUDA应用程序的软件包,其中包括CUDA驱动程序和CUDA运行时库。 CUDA驱动程序:CUDA驱动程序是一个用于与GPU通信的软件组件它负责管理GPU的硬…

    other 2023年5月7日
    00
  • 详解React+Koa实现服务端渲染(SSR)

    详解React+Koa实现服务端渲染(SSR) 什么是服务端渲染(SSR) 服务端渲染是指在服务端生成页面的 HTML 内容,然后将其发送给浏览器进行展示,相较于传统 SPA 的客户端渲染,服务端渲染具有一些优势: 更好的 SEO 表现,搜索引擎能够抓取到页面内容。 更快的首屏加载速度,因为生成的 HTML 会比客户端渲染快很多。 更好的用户体验,因为用户看…

    other 2023年6月27日
    00
  • Mysql中的嵌套子查询问题

    MySQL中的嵌套子查询问题攻略 嵌套子查询是MySQL中一种强大的查询技术,它允许在一个查询中嵌套另一个查询。这种技术可以帮助我们解决复杂的查询需求,提供更灵活和精确的结果。在本攻略中,我将详细介绍MySQL中嵌套子查询的使用方法,并提供两个示例说明。 1. 嵌套子查询的基本语法 嵌套子查询的基本语法如下: SELECT column1, column2,…

    other 2023年7月28日
    00
  • 图文详解Java中class的初始化顺序

    下面我将为大家详细讲解“图文详解Java中class的初始化顺序”的完整攻略。 1. 为什么需要了解Java中class的初始化顺序? Java中的class在被实例化之前需要先进行初始化操作,而初始化的顺序直接影响到程序最终的正确性和性能。因此了解Java中class的初始化顺序是非常必要的,可以帮助我们在编写程序时更好地理解代码、避免出现错误和提升程序性…

    other 2023年6月20日
    00
  • Linux系列:进阶之jdk、X window安装与使用

    Linux系列:进阶之jdk、X window安装与使用的完整攻略 本文将提供一个完整的攻略,包括在Linux系统中安装和配置JDK和X window的步骤,以及两个示例说明。 安装JDK JDK是Java开发环境,包含了Java编译器、Java虚拟机和Java类库等组件。在Linux系统中安装JDK可以使用以下步骤: 下载JDK安装包,可以从Oracle官…

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