Java超详细透彻讲解static

Java超详细透彻讲解static

什么是static

在Java中,static关键字可以用来修饰变量、方法和代码块,它表示这个成员在类中只有一份,不需要创建实例就能访问。也可以说,static修饰的成员属于类本身而不属于对象。

static变量

static变量是在类中使用static关键字来修饰的变量,它是类共享的,对于该类的所有对象来说,static变量的值都是一样的。

示例1

下面的示例展示了如何声明和使用一个static变量

public class MyClass {
  static int myStaticVariable = 42;

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

输出:42

示例2

下面的示例展示了如何使用static变量来统计对象的数量。

public class MyClass {
  static int objectCounter = 0;

  MyClass() {
    objectCounter++;
  }

  public static void main(String[] args) {
    MyClass obj1 = new MyClass();
    MyClass obj2 = new MyClass();
    MyClass obj3 = new MyClass();

    System.out.println("Object count is: " + objectCounter); // output: Object count is: 3
  }
}

static方法

static方法是在类中使用static关键字来修饰的方法,它是类级别的,不需要创建实例就能访问。

示例1

下面的示例展示了如何声明和使用一个static方法。

public class MyClass {
  static void myStaticMethod() {
    System.out.println("Static method is called");
  }

  public static void main(String[] args) {
    myStaticMethod();
  }
}

输出:Static method is called

示例2

下面的示例展示了如何通过static方法来获取一个随机数。

import java.util.Random;

public class MyClass {
  static int getRandomNumber() {
    Random random = new Random();
    return random.nextInt(100);
  }

  public static void main(String[] args) {
    int randomNumber = MyClass.getRandomNumber();
    System.out.println(randomNumber);
  }
}

输出:一个0到99之间的随机数。

static代码块

static代码块是在类中使用static关键字来修饰的代码块,它只在类加载时执行一次。

示例

下面的示例展示了如何使用static代码块来初始化static变量。

public class MyClass {
  static int myStaticVariable;

  static {
    myStaticVariable = 42;
  }

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

输出:42

总结

通过上面的示例,我们学会了如何声明和使用static变量、方法和代码块。static是Java中非常重要的关键字,具有很多用途,例如:全局变量、单例模式、工具类等。我们应该在编写代码时合理地使用static,以提高代码的可维护性和可读性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java超详细透彻讲解static - Python技术站

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

相关文章

  • IDEA工程运行时总是报xx程序包不存在实际上包已导入(问题分析及解决方案)

    问题背景 在使用 JetBrains 旗下的 Java IDE 工具 IntelliJ IDEA 进行项目开发时,有时会遇到一个问题:在导入了某些依赖库后,运行程序时提示某些类找不到或某些程序包不存在,但实际上这些包已经被正确导入了。 问题原因 这是因为 IntelliJ IDEA 默认会在编译、运行时根据 Maven、Gradle 或自己所设置的依赖路径自…

    Java 2023年5月26日
    00
  • java实现文件读写与压缩实例

    Java实现文件读写与压缩实例 文件读取 Java中可以通过File类和FileInputStream类来实现文件读取。其中,File类用于表示文件对象,而FileInputStream类用于读文件的数据流。 下面是一个简单的文件读取的示例代码,读取指定路径下的txt文件: import java.io.File; import java.io.FileIn…

    Java 2023年5月20日
    00
  • 如何让java只根据数据库表名自动生成实体类

    让我来讲解一下如何让Java只根据数据库表名自动生成实体类的完整攻略。 1. 创建Maven工程 首先,我们需要创建一个Maven工程,用于管理我们的项目依赖和构建。 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or…

    Java 2023年5月20日
    00
  • 让JPA的Query查询接口返回Map对象的方法

    要让JPA的Query查询接口返回Map对象,可以使用以下方法: 使用JPA自带的元模型(Metamodel)生成查询结果为Map的查询语句 通过Metamodel可以访问实体的属性,例如,对于一个名为User的实体,可以通过以下代码访问它的属性:User_.name 示例代码: CriteriaBuilder cb = entityManager.getC…

    Java 2023年5月20日
    00
  • SpringAop日志找不到方法的处理

    在使用Spring AOP时,有时会出现日志找不到方法的情况。这通常是由于切点表达式不正确或目标方法的访问修饰符不正确导致的。在本文中,我们将提供一个完整的攻略,以解决Spring AOP日志找不到方法的问题,并提供两个示例说明。 1. 确认切点表达式 在使用Spring AOP时,我们需要使用切点表达式来指定要拦截的方法。如果切点表达式不正确,则可能会导致…

    Java 2023年5月18日
    00
  • 两种java实现二分查找的方式

    下面是详细讲解“两种java实现二分查找的方式”的攻略。 一、二分查找基本算法 二分查找算法的基本思想是:在一个有序数组中,查找一个元素,先找到数组的中间元素,然后将要查找的元素和中间元素进行比较,如果相等则直接返回中间元素,如果大于则在中间元素的右半部分继续查找,如果小于则在中间元素的左半部分继续查找,如此循环直到找到要查找的元素或者找不到为止。 Java…

    Java 2023年5月19日
    00
  • Java多线程编程中ThreadLocal类的用法及深入

    Java多线程编程中ThreadLocal类的用法及深入详解 什么是ThreadLocal类? ThreadLocal是Java中一个非常重要的线程工具类。它为每个线程提供了一个单独的副本,可以在整个线程的声明周期中使用,且该副本可以在任何时候被当前线程访问。该工具类通常用于线程安全地处理共享对象。 ThreadLocal类的用法 ThreadLocal类是…

    Java 2023年5月19日
    00
  • java处理日期的工具类DateUtil

    Java日期处理工具类DateUtil Java中处理日期时间是非常常见的需求,使用Java默认的Date类虽然可以实现,但是其API使用起来不太友好,我们往往需要借助一些工具类来辅助我们处理日期时间。DateUtil是一款常见的日期处理工具类,它封装了很多常用的方法,可以用于日期的计算、格式化、解析等操作,非常方便实用。 导入DateUtil 在使用Dat…

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