欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Java 《static关键字与工具类》

Java 《static关键字与工具类》

2025/5/3 14:08:00 来源:https://blog.csdn.net/ouhexie/article/details/142872852  浏览:    关键词:Java 《static关键字与工具类》

static关键字

作用主要包括:

  1. 定义类变量(静态变量)以实现共享数据。
  2. 定义静态方法,便于通过类名直接调用。
  3. 使用静态代码块来在类加载时进行初始化操作。
  4. 定义静态内部类,用于逻辑关联但独立于外部类实例的场景。
  5. 通过静态导入简化代码中的类静态成员的访问。
  6. 实现单例模式,确保类只有一个实例。
  7. 声明静态常量,用于类的全局不可变数据。

静态变量

被static修饰的成员变量,叫做静态变量

特点:

  • 被该类所有对象共享

  • 不属于对象,属于类。

  • 静态变量随着类的加载而加载,优先于对象存在

调用方式:

  • 类名调用(推荐)

  • 对象名调用

初始化时机:静态变量在类加载时初始化,且只会初始化一次。

使用场景:常用于常量定义、计数器等场景。

静态方法

被static修饰的成员方法,叫做静态方法

特点:

  • 多用在测试类和工具类中

  • Javabean类中很少会用

调用方法:

  • 类名调用(推荐)

  • 对象名调用

重载与隐藏:静态方法可以被重载,但不可以被重写(子类中不可以覆盖父类的静态方法)。

使用场景:常用于创建工厂方法、工具方法等。

注意

用对象名调用静态方法时,编译器会检查该方法是否存在于类中,并将调用转换为通过类名进行调用。

静态代码块

被static修饰的代码块,叫做静态代码块

特点

  • 执行时机:类被加载时执行,优先于任何对象的创建。

  • 执行次数:每个类只会执行一次。

使用场景:用于复杂的静态初始化,例如多个静态变量的初始化或执行必须在类初始化时完成的操作。

静态导入

静态导入(static import)允许直接导入类的静态成员,使得在使用这些静态成员时无需前缀类名,从而简化代码编写。

特点:

  • 静态导入可以导入静态方法和静态变量。

  • 过度使用静态导入会降低代码的可读性,因此应谨慎使用,通常在导入常用常量或方法时使用。

使用场景:主要用于简化对常用静态成员的调用,如 Math 类的 PI 常量或 sqrt 函数。

案例

import static java.lang.Math.*; //静态导入
​
public class Main {public static void main(String[] args) {double result = sqrt(16); // 不需要 Math.sqrt()System.out.println(result); // 输出:4.0}
}

静态的执行时机

类加载
  • 静态成员(包括静态变量和静态代码块)在类被首次加载时执行。

  • 类加载一般发生在以下情况下:

    • 当创建该类的实例时。

    • 当该类的静态方法被调用时。

    • 当访问该类的静态变量时。

静态变量初始化
  • 静态变量按照在类中出现的顺序进行初始化。

  • 如果同时存在多个静态变量和静态代码块,它们的执行顺序是:

    1. 按定义顺序初始化静态变量

    2. 执行静态代码块(按定义顺序)

静态代码块执行
  • 静态代码块在类加载时执行,只会在类加载时被调用一次。

工具类

作用

帮助我们完成某些功能,而不是描述一类事物的类。

实现步骤
  1. 私有构造方法:防止外部实例化对象。

  2. 静态方法:所有方法均用static修饰。

  3. 访问方法:通过类名.方法名调用。

Why 静态:工具类方法不依赖于特定的对象状态,因此使用静态方法更合理。

static的注意事项

  • 静态方法只能访问静态变量和静态方法

  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法

  • 静态方法中是不能存在this关键字的

总结

静态方法中,只能访问静态。

非静态方法中可以访问所有。

静态方法中没有this关键字

认识main方法

public class HelloWorld{public static void main(String [] args){System.out.println("HelloWorld");}
}
  • public:被JVM调用,访问权限足够大

  • static:被JVM调用,不用创建对象,直接类名访问

  • 因为main方法是静态的,所以测试类中其他方法也需要是静态的。

  • void:被JVM调用,不需要给JVM返回值

  • main:一个通用的名称,虽然不是关键字,但是被JVM识别

  • String [] args:以前用于接收键盘录入数据的,现在没用

欧了,到这里我应该解释的差不多啦,我是南极,大胆做自己,活出精彩的人生👊👊👊

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词