static和final

(1)static关键字:

1》类变量/静态变量

  在系统加载其所在类时分配空间并初始化,创建该类的实例对象时不再分配空间,所有实例共享类的静态变量。

2》类方法/静态方法

  静态方法通过类名而不是通过实例对象进行访问。注意2点:

  1.因为不是通过实例对象进行调用的,所以在静态方法中没有this指针,不能访问非静态变量和方法,只能访问方法体内的局部变量,自己的参数和静态变量。

  2.子类不能重写父类的静态方法,但在子类中可以声明与父类静态方法相同的方法,从而将父类的静态方法隐藏。另外子类不能把父类的非静态方法重写为静态的。

  class ClassA

{

       public void methodOne(int i){}

       public void methodTwo(int i){}

       public static void methodThree(int i){}

       public static void methodFour(int i){}

}

class ClassB extends ClassA

{

      public static void methodOne(int i){}//错误,不能将非静态重写为静态

      public void methodTwo(int i){}//正确,重写

      public void methodThree(int i){}//错误,不能重写ClassA中的静态方法

      public static void methodFour(int i){}//正确,将methodFour方法隐藏

}

 

静态初始化程序

  不属于任何方法体并且以static关键词修饰的语句块,成为静态语句块。在加载该类时只执行一次。

  class StaticDemo

{

    static int i;

   static

    {

       i=5;

       System.out.println("Static code:i="+i);

    }

}

public class TestStaticInit

{

    public static void main(String args[])

   {

      System.out.println("Main code:i="+StaticDemo.i);

    }

}

 

输出结果:

  Static code:i=5;

  Main  code:i=6;

 

(2)final关键词

   1.在类的声明时使用:final class 类名        阻止被继承。

   2.在成员方法中使用:final type function(){} 阻止被重写。

   3.在成员变量声明中使用:该变量一经赋值则不能被改变,声明final变量并同时赋初值来定义常量,一般大写

           final int PI=3.14;

     如果在声明时没有赋值,则在所属类的每个构造函数中都必须对该变量赋值。

    如果未赋初值的final变量是局部变量,则可以在所属方法体的任何位置对其赋值,但只能赋一次。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值