休对故人思故国,且将新火试新茶。诗酒趁年华。

——苏轼《望江南》

## 1. static关键字
  1. static关键字
    1. 关于static关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员属于类的,而不是单单是属于某个对象。也就是说,既然属于类,就可以不靠创建对象来调用了。
    2. 如果使用static修饰成员方法,那么这个方法就变成了静态方法
  2. 静态属性和静态方法(类加载器加载字节码文件的时候 全局委托机制)优先于非静态的属性和方法。
    1. 非静态的属性和方法—–知道有哪些静态的属性和方法,所以他能够访问静态的属性和方法
    2. 但是因为静态属性和方法加载的时候,这时候还没有对象,没有对象就没有成员变量和成员方法。
      所以静态的方法中无法调用非静态的属性和方法。
    3. 静态方法中,不能使用this关键字。
  3. static修饰的属性和方法是属于类的属性和方法,所以在调用的时候,推荐是用 类名.属性名 类名.方法名();
  4. 静态代码块 > 非静态代码块 > 构造器。Static{} {} public 类名(){}
    1. 静态代码块只执行一次,非静态代码块,每次进入到当前类的时候都会执行一次。
    2. 1563210995163

2. final关键字

代表的是最终的,不可改变的

2.1 常见的四种用法

  • final 关键字可以用来修饰一个 \类* * 被修饰的类,不能被继承。
  • final 关键字可以用来修饰一个 \方法** 被修饰的方法,不能被重写。
  • final 关键字可以用来修饰一个 \成员变量** 被修饰的变量,不能被重新赋值。
  • final 关键字可以用来修饰一个 \局部变量** 被修饰的变量,不能被重新赋值。
2.1.1 final修饰局部变量
  1. 一旦使用final来修饰局部变量,那么这个变量不能进行修改。一次赋值,终生不变。
  2. 引用数据类型,修改对象的属性是不会报错,如果重新new 对象的时候,新开辟了一块内存地址。将新的地址赋值给student引用报错。final修饰的引用数据类型,不能改变引用的地址能改变其属性值。
2.1.2 final修饰成员变量
  1. 局部变量使用final修饰的时候,不赋值不报错(但在调用之前需要赋值)。 局部变量没有默认值。
  2. 成员变量使用final修饰的时候,不赋值报错。 成员变量有默认值,所以必须手动赋值。(假设:如果不给final修饰的变量赋值,那么这个变量使用默认值。)
  3. 使用final修饰成员变量。只要是在创建对象之前给属性赋值就可以了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* @Date 2020/5/15 10:00
* @Version 10.21
* @Author DuanChaojie
*/
public class test {
//private static final String name;//报错

private static final String adr = "周口";

public static void main(String[] args) {
// System.out.println("test.name = " + test.name);
System.out.println("test.adr = " + test.adr);
testFinal();
}

public static void testFinal() {
final String name = "admin";
final int age;
// 赋值后不报错
age = 18;
// final String adr; 报错
// System.out.println("adr = " + adr);
System.out.println("age = " + age);
System.out.println("name = " + name);
}

}
2.1.3 final修饰方法
  1. 当关键字final修饰一个方法的时候,这个方法就是最终方法,也就是说当前的方法不能重写。
2.1.4 final修饰类
  1. 如果使用了final关键字修饰一个类那么这个使用final修饰的类不能有任何的子类但是可以拥有父类
  2. final 不能和abstract同时修饰一个类,因为final修饰的类不能被继承(所以所有的方法都不能被重写)但是abstract修饰的类是抽象类,抽象类里面的抽象方法必须被继承重写。所以final和abstract产生了冲突,这两个关键字不能一起使用。