java类中Static的用法与特点

Static所修饰的类属性

特点与存储位置

  • Static所修饰的属性不属于任何一个类的具体对象而专属于类,但其可被类和对象所调用。
  • 它被保存在类方法区,而不是保存在对象的堆区。

代码示例

public class CountObject{
     private static int i=0;
     CountObject(){
     i++;
     }
     public int getI(){
     return i;
     }
     public static void main(String args[]){
           CountObject t=new CountObject();
           t=new CountObject();
           System.out.println("t.getI()");
           }
     }

  1. 最后的输出结果为2的原因:
  • 在第一次创建对象的时候,立即调用了构造方法CountObject(),此时i++,i=1
  • 执行t=new CountObject()时,给t这个对象引用进行了“刷新”,此时再次调用构造方法CountObject(),此时i++,i=2
  • 最后调用getI()方法,输出结果2
  1. 这个结果表明Static存储位置与对象存储位置不同,不受对象的改变而改变

Static所修饰的类方法

特点与存储位置

  • Static所修饰的类方法也不属于任何一个类的具体对象而专属于类,但其可被类和对象所调用
  • Static 方法内部的代码只能访问类中的Static属性或方法,不能访问非Static的属性和方法,但非Static的属性和方法可以访问Static的属性和方法
  • main方法是特殊静态的方法
  • 也被保存在类方法区,而不是保存在对象的堆区

代码示例

public class AccessValue{
      int value;
      public static void main(String args[]){
      System.out.println(value);
      }
     
     }

此程序将报错,因为main方法属于静态方法无法调用非静态属性

静态代码块

代码示例

public class StaticCodeBlocks{
      static int value;
      static{
      value = 3;
      Syestem.out.println(value);
      }
      public static void main(String args[]){
      }
     
     }

结果输出为3

解析

此代码为静态代码块

 static{
      value = 3;
      Syestem.out.println(value);
      }
  • 不含任何方法,当类被装载时,只被执行一次
  • 经常被用来对类中的属性进行初始化
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值