java static关键字

本文深入探讨Java中static关键字的作用及应用场景,包括static变量与方法的特点、执行时机等,并通过实例对比了static与非static的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         通常,我们创建类时会指出那个类的对象的外观与行为。除非用new 创建那个类的一个对象,否则实际上并


未得到任何东西。只有执行了new 后,才会正式生成数据存储空间,并可使用相应的方法。


但是有两种特殊的情形,上面的方法并不管用:


       1.    只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。


       2.    我们需要一个特殊的方法,它没有与这个类的任何对象关联(也就是说没有new一个对象)。即使没有创建对象,也需要一个能调用的方法。


像上面的两种情况,用static可以很好的解决这些问题。


       static方法的调用有两种方式,一种是通过对象调用,另一种是方法名调用。通常使用第二种。


       对学过Java的人来说,对static的使用肯定不陌生,可能有人会说这有什么好说的呢?不就是方法前


加个static关键字,然后调用的时候直接用类名点方法名不就可以了吗。


使用的方法确实没错,这里要说的是static的一点特殊的解析:


如下:


成员前没加static:


public class StaticClass {
         int i = 3;
}


   public static void main(String[] args) {
        StaticClass c1 = new StaticClass();
        StaticClass c2 = new StaticClass();

        c1.i++;
        System.out.println(c2.i);
    }


执行结果: 3



成员前加了static:

public class StaticClass {
    static int  i = 3;
}


执行类:


  public static void main(String[] args) {
        StaticClass c1 = new StaticClass();
        StaticClass c2 = new StaticClass();

        c1.i++;
        System.out.println(c2.i);
   }


或者:

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


执行结果:4



总结:加了static的成员,无论new了多少个对象,该成员都只占用一个存储空间。


拓展:

关于类中的静态static模块:

public class StaticClass {
	static {
             //逻辑代码....类加载的时候执行,并且只执行一次。
             System.out.println("类加载的时候执行,并且只执行一次。");	 
      }
}


1. 当给StaticClass   new 一个对象的时候,执行上述代码中的static块....,不管生成多少个对象,该static块只加载执行一次。


2. 当采取【Class.forName("类的全路径");】语句进行类加载时,执行static块。


正因为static块在类加载的时候就执行了,所以当在static方法中调用非static方法时,会报编译错误!!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值