static&final&代码块

static

静态

  1. 随着类的加载而加载

  2. 优先于对象存在

  3. 被类的所有对象共享

  4. 可以通过类名调用

注意

  • 在静态方法中是没有this关键字
  • 静态的属性存在于方法区的静态区

静态变量和成员变量的区别

  1. 所属不同
    • 静态变量属于类也属于对象,还有其所有的子类及子类对象,所以也称为为类变量
    • 成员变量属于对象,所以也称为实例变量(对象变量)
  2. 内存中位置不同
    • 静态变量存储于方法区的静态区
    • 成员变量存储于堆内存
  3. 内存出现时间不同
    • 静态变量随着类的加载而加载,随着类的消失而消失
    • 成员变量随着对象的创建而存在,随着对象的消失而消失
  4. 调用不同
    • 静态变量可以通过类名调用,也可以通过对象调用
    • 成员变量只能通过对象名调用

静态代码块

做些初始化

工具类

javadoc命令生成说明书

final

最终的

  1. final+变量(局部变量 成员属性) 变量就变成了常量

  2. final+方法:该方法不能被重写

  3. final 类:该类不能被继承 String类 就是一个final

基本类型,是值不能被改变
引用类型,是地址值不能被改变,对象中的属性可以改变

A:final概述
B:final修饰特点
修饰类,类不能被继承
修饰变量,变量就变成了常量,只能被赋值一次
修饰方法,方法不能被重写
C:案例演示
final修饰特点

代码块

在java中,使用{}括起来的代码被称为代码块

根据位置和声明的不同,分为4类

局部代码块

方法中局部位置,用于限制变量的生命周期

public static void main(String[] args)
{
    {
        int i = 1;
        system.out.println(i);
    }//i被释放销毁
}

构造代码块

在类中的成员位置。每次调用构造方法是都会先执行构造代码块中的代码

可以把多个构造方法的共同代码放到一起执行,每次调用构造函数之前执行

class Code{
    {
        system.out.println("构造代码块");
    }
    public Code(){
        system.out.println("构造函数");
    }

}
//输出
构造代码块
构造函数

静态代码块

在类中的成员位置,用static修饰
只在类加载的时候可以执行一次

class Code{
    static{
        system.out.println("静态代码块");
    }
    {
        system.out.println("构造代码块");
    }
    public Code(){
        system.out.println("构造函数");
    }

}
//输出
静态代码块
构造代码块
构造函数

同步代码块

多线程内容

你可能感兴趣的:(static&final&代码块)