关于(非)/静态方法与(非)/静态变量的调用关系

总结

  1. 非静态方法是与类的实例相关联的,而静态方法则不需要创建类的实例即可直接调用。

  2. 非静态方法可以访问和修改非静态变量和静态变量,而静态方法只能访问和修改静态变量。

  3. 非静态方法可以通过关键字this来引用当前对象的引用,而静态方法则不能使用this关键字。

可以说静态方法级别的。

静态方法是与类本身相关联的方法,而不是与具体的实例对象相关联的方法。因此,静态方法可以被视为类级别的代码,它们不需要依赖于任何特定的实例对象。

在静态方法中,不能使用this关键字引用当前实例对象,因为静态方法不依赖于任何实例对象。静态方法通过类名直接调用,而不需要创建实例对象。因此,在静态方法中,只能访问静态成员变量和静态方法,不能访问非静态成员变量和非静态方法。

静态方法通常用于实现与类相关的功能,例如工具类方法、常量定义等。由于静态方法不依赖于实例对象,因此它们可以在不用创建对象的情况下被调用,这使得它们在一些情况下更加方便和高效。

拓展

1. 静态方法不能直接调用非静态变量,但是可以通过实例化对象去调用。

public class MyClass {
    private int nonStaticVariable;

    public static void myStaticMethod() {
        MyClass obj = new MyClass();
        obj.nonStaticVariable = 10; // 通过实例化对象访问非静态变量
        System.out.println(obj.nonStaticVariable);
    }
}

2. 静态方法之间可以相互调用。

静态方法之间可以相互调用。在一个类中,静态方法可以直接调用其他静态方法,而不需要创建实例对象。这使得静态方法之间的相互调用非常方便。

public class MyClass {
    public static void method1() {
        System.out.println("Inside method1");
        method2(); // 直接调用静态方法method2()
    }

    public static void method2() {
        System.out.println("Inside method2");
    }
}

 程序执行过程中的执行时间

  1. 静态变量的初始化:静态变量在类加载的时候进行初始化。类加载发生在以下几种情况下:

    • 创建类的实例对象。
    • 调用类的静态方法。
    • 访问类的静态变量。
  2. 静态代码块的执行:如果类中包含静态代码块,那么在类加载的过程中,静态代码块会被执行。静态代码块一般在类加载时用于进行一些静态变量的初始化或其他必要的静态操作。

  3. 静态方法的调用:静态方法可以在任何时候被调用,无需创建类的实例对象。当我们直接通过类名调用静态方法时,对应的静态方法被执行。

总结起来,静态变量在类加载时进行初始化,静态代码块在类加载时执行,而静态方法可以在任何时候被调用。这使得静态方法和静态变量具有类级别的特性,可以在不创建类的实例对象的情况下使用。

 

 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小天博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值