Java中static关键字的作用、使用以及注意事项

一、static的作用

在Java中,static是一个关键字,用于表示静态的特性。它可以用于修饰变量、方法和内部类。

二、用static修饰有什么不一样

2.1静态成员变量

static int number;

number用了static修饰,所以number就是静态成员变量。它属于类而不是对象,只会在内存中存在一份副本。可以直接通过类名访问静态变量,无需创建对象。静态变量在程序运行期间始终存在,直到程序结束或被显式销毁。

2.2静态方法

    public static void printHello() {
        System.out.println("hello");
    }

静态方法不需要依赖于对象,可以直接通过类名调用。不能在静态方法中直接访问非静态成员,因为非静态成员的生命周期与对象相关。

2.3静态内部类

静态内部类与外部类相互独立,可以直接通过外部类名访问。静态内部类可以拥有静态和非静态成员,且不依赖于外部类的实例。

三、使用static的情况

在工具类中定义常量,如public static final int MAX_COUNT = 100;。
创建单例模式中的静态方法,如public static Singleton getInstance() { return instance; }。
在静态方法中调用其他静态方法或访问静态变量。
在静态内部类中定义静态成员或方法。

四、注意

4.1静态成员属于类级别,与对象无关:

        静态变量和静态方法属于类本身,而不是类的实例。

        静态成员在内存中只有一份副本,被所有类的对象所共享。

4.2静态成员不能直接访问非静态成员:

        静态方法和静态变量不能直接访问非静态方法和非静态变量,因为非静态成员是依赖于对象存在的。

        若要在静态方法中访问非静态成员,需要通过创建对象来访问。

4.3静态方法中不能使用this关键字:

  this关键字代表当前对象,在静态方法中没有当前对象的引用,因此不能在静态方法中使用this关键字。

        如果静态方法需要访问对象的成员,可以将对象作为参数传递给静态方法。

4.4静态成员可以通过类名直接访问:

        静态成员可以直接使用类名进行访问,无需创建对象。

        例如:ClassName.staticVariable 或者 ClassName.staticMethod()

4.5静态块(static block):

        可以使用静态块初始化静态变量或执行其他静态操作。

        静态块在类加载时执行,并且只会执行一次。

4.6单例模式中常用静态成员:

        静态变量和静态方法常用于创建单例模式,保证全局只有一个实例。

        静态变量可以存储单例对象的引用,静态方法用于获取该实例。

4.7注意线程安全性:

        多个线程同时访问静态成员可能导致并发冲突,需要注意线程安全性。

        可以通过使用同步关键字或其他线程安全机制来解决并发问题。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老张骑摩托

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值