java学习笔记 static,final关键字学习

时间:2022-04-06 16:49:32

Static关键字可以用在类,方法,属性上。表示静态。

  static属性:一类的属性被static修饰后,无论该类生成多少个实例,都共用同一个静态属性,所以其中若有一个实例改变了静态属性的值,则其他实例同样会受到影响。

  static方法:可以通过类名直接访问。

                       同时static方法只能继承不能override。

                       静态方法中只能使用静态属性,调用静态方法,即静态不能使用非静态变量方法,而非静态可以使用静态或者非静态的变量或者方法

  static代码块:static block会优先于构造方法执行,当类被加载到JVM上的时候就会执行,且只会执行一次。

                            若一个类Man有一个子类Child,两者都有静态代码块,若声明一个子类的顺序,则代码执行的顺序是:

                            父类的Man的static block->Child的static block->Man的构造方法->Child->的构造方法


public class StaticBlockTest {

public static void main(String[] args) {

Child a = new Child();

}

}

class Man{

public Man(){

System.out.println("Man's Constructor");
}

static {
System.out.println("Man's Static Block");
}

}

class Child extends Man{

public Child(){

System.out.println("Child's Constructor");

}

static {

System.out.println("Child's Static Block");

}

}

输出结果:

Man's Static Block
Child's Static Block
Man's Constructor
Child's Constructor


final关键字可以修饰:类,方法,属性

  final类:表示类不能继承

  final方法:表示方法不能重写;

  final属性:表示属性的值 不能修改

                           1、若是原生类型之一,则表示值一旦赋予则不能修改;

                           2、若是引用类型,则对象引用不能在指向其他对象,但原来对象中的属性可以修改

final int  a = 3;
final Man man = new Man(1,"name");
man.setAge(a);

即 a=3后,若在对a进行赋a=4则就会报错,而对于man,则可以修改它的内在属性。