天天看点

黑马程序员_static和final关键字

------- android培训、java培训、期待与您交流! ----------

1.static属性

1)static修饰的资源属于类级别,是全体对象实例共享的资源

2)静态属性

·使用static修饰的属性,属性类的全体类的实例共享的变量

·静态属性是在类的加载期间初始化的

·使用类名·属性访问,如:System.out

3)实例变量

·属于对象的属性

·使用对象属性访问,如:person.name

例:

public class StaticFiledDemo{

  public static void main(String[] args){

  Foo f1=new Foo();

  Foo f2=new Foo();

  Foo f3=new Foo();

System.out.println(

       f1.id+""+f2.id+""+f3.id+""+Foo.i);

}

class Foo{

  int id;

  static int i=0;

  public Foo(){

  id=i++;

}

注:

·int id            实例变量,相当于"每个人的水杯"

·static int i=0;   静态级别变量,相当于"共用的水桶";

2.static方法

使用static声明的方法,属于类的方法,一般用来表示工具方法

在类加载以后可以自己调用,不需要创建爱你任何类的实例对象。

public class StaticMethodDemo{

   public static void main(String[] args){

   int c=Moo.add(1,2);//使用类名访问静态方法

   System.out.println(c);

   double d=Math.sin(Math.PI);

   System.out.println(d);

   long now=System.currentTimeMills();

   }

}

class Moo{

  int a=2;

//静态方法是属于类的方法,是公共工具方法

//静态方法不能访问属于对象的资源

  public static int add(int a, int b){

  return a+b;

  }

}

3.静态代码块

静态代码块是在类加载期间运行的代码块,由于类加载一次,所以静态代码块只执行一次

静态代码块用途不是很常见,一般是类加载以后初始化一些资源时使用。

1.final关键字

1)final修饰的类,不能被继承

·java的String就是final类,不能被继承

·Math是final类,不能被继承。

·Integer、Long、Character等包装类是final类,不能被继承

·在实际原则上是不允许使用final类

  Spring、Hibernate、Struts2,这些框架使用了"动态继承代理"技术,使用final的类会影响"动态代理技术"的实现;

2)final修饰的方法,不能再被覆盖

·在实际项目开发中,原则上不使用final方法,因为动态代理技术。

3)final修饰的变量,初始化以后不允许再修改了

·final  局部变量

·final  方法参数

·final  的成员变量

4)final static---Java 使用final static 修饰的变量作为常量

·一般要求常量名都有大写字母

·java常量不是const

------- android培训、java培训、期待与您交流! ----------