详解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日

相关文章

  • Lua中的递归函数写法实例

    下面是由浅入深的关于Lua中递归函数的写法规范和实例说明。 1. 递归函数的定义 递归函数是指在函数的执行过程中,调用自身的行为。 递归函数必须有一个递归终止条件,否则将会发生无限递归,使程序崩溃。 2. 递归函数的写法 下面是递归函数的标准写法。 function recursion(num) — 1.递归终止条件 if (num == 1) then …

    other 2023年6月27日
    00
  • Python变量教程之全局变量和局部变量

    Python变量教程之全局变量和局部变量攻略 在Python中,变量可以分为全局变量和局部变量。全局变量是在整个程序中都可访问的变量,而局部变量则只能在其定义的函数或代码块中访问。本教程将详细讲解全局变量和局部变量的概念、作用域以及如何使用它们。 全局变量 全局变量是在函数外部定义的变量,可以在整个程序中的任何地方访问。它们的作用域覆盖整个程序,包括函数内部…

    other 2023年7月28日
    00
  • Android Studio连接天天模拟器

    Android Studio连接天天模拟器 天天模拟器是一款常用的Android模拟器,而Android Studio是开发Android应用非常常用的集成开发环境,本文将介绍如何在Android Studio中连接天天模拟器。 步骤一:启动天天模拟器并获取模拟器的IP地址 在电脑上启动天天模拟器,在模拟器中运行应用或访问网络,可以得到模拟器的IP地址。在模…

    其他 2023年3月28日
    00
  • (数学)p、np、npc、nphard问题

    (数学)p、np、npc、nphard问题 前言 在计算机科学中,p、np、npc、nphard问题是非常经典的一个研究领域。这些问题之间有着天然的联系和区别,它们是计算问题分类和算法研究的重要基础和工具。本文将介绍这些问题,并且探讨它们在计算机科学中的应用。 P问题 P问题,即多项式时间问题,是一类可以在多项式时间内解决的问题,通俗的讲,就是可以用计算机算…

    其他 2023年3月28日
    00
  • 应用宝app首页栏目怎么自定义设置?

    应用宝是一款著名的应用商店,用户可以通过它下载并安装各种应用软件。在应用宝的首页中,顶部会展示一些常用的栏目,例如推荐、排行榜、分类等。对于APP开发者来说,自定义设置应用宝首页栏目是非常重要的,可以帮助应用更好地展现出来,提高下载量和曝光率。 下面是应用宝app首页栏目自定义设置的详细攻略: 1.注册成为应用宝开发者 开发者需要先在应用宝开发者中心注册账号…

    other 2023年6月25日
    00
  • 内存参数终极优化之DDR篇

    内存参数终极优化之DDR篇攻略 1. 了解DDR内存 DDR(Double Data Rate)内存是一种常见的计算机内存类型,它具有高速读写和传输数据的能力。在优化DDR内存参数之前,我们需要了解一些基本概念: 时钟频率(Clock Frequency):DDR内存的时钟频率表示每秒钟内内存模块可以进行的操作次数。常见的DDR内存时钟频率有DDR3-160…

    other 2023年8月1日
    00
  • html5页面结构_动力节点Java学院整理

    HTML5页面结构攻略 HTML5是一种用于构建网页结构的标记语言。在本攻略中,我们将详细讲解HTML5页面结构的基本要素和示例说明。 1. 文档类型声明 在HTML5中,我们使用以下文档类型声明来指定文档类型: <!DOCTYPE html> 这个声明告诉浏览器当前文档是基于HTML5标准编写的。 2. 页面结构 HTML5引入了一些新的语义化…

    other 2023年9月6日
    00
  • 一篇文章带你掌握C++虚函数的来龙去脉

    一篇文章带你掌握C++虚函数的来龙去脉 背景 C++中的虚函数是一个较为复杂的概念,但又是一个非常重要的特性。在C++中,新手程序员非常容易出现“虚函数”与“普通函数”的混淆,不理解其来龙去脉,导致代码出现各种问题。本篇文章将系统地介绍C++虚函数的基础知识,包括虚函数的用途,实现原理,虚函数表,以及多重继承等问题,帮助读者全面掌握C++虚函数的来龙去脉。 …

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