static&final&代码块&内部类&枚举总结

发布时间 2023-12-28 20:48:43作者: ZWJAS

总结

static修饰符

static:静态的
static修饰的成员只能类有关系,类被加载的时候,static修饰成员就放入了内存
static能修饰那些成员:
1)、成员变量,不能修饰局部变量
2)、修饰非抽象的方法

成员变量加static和不加的区别?
名称不一样,存储位置不一样,一个是全局,一个是局部

声明成员变需要加static,所有对象共享一个数据的时候

static修饰的成员变只能用public修饰,没有static修饰的都需要时private

static修饰方法
static修饰的方法是类方法
没有static修饰方法是实例方法

注意:static修饰的方法里面只能调用类变量

区别:没有static变量: 实例变量 int a;
有static变量:类变量(静态变量) static int b;
实例变量存在堆里面

​ 类变量存在静态区
​ 类变量存在静态区
​ 类变量是和类有关系(字节码对象),不管创建几个对象,这几个对象都共享同一个类变量

final关键字

final:最终的
final修饰的成员就是不能更改
final修饰类:
public final class A {

}
修饰类表示这个类不能被继承,没有子类

final修饰方法:不能被子类重写的方法

final修饰变量:这个变量的值只能赋值一次,常量
final 数据类型 常量名;

注意:声明一个常量,为了增强常量的标识性,常量名全部大写

代码块

代码块:{}包含的代码就是代码块
if(){}
for(){}
class A {

}
public void m() {

}

{}:构造代码块,在调用构造方法之前要执行的代码,每调用一次构造方法,构造代码块就会执行一次
构造代码块的的作用是简化构造方法重复性的代码

调用构造方法只让代码块执行一次
static {}:静态代码块,只是第一次调用构造方法的时候执行一次,后面就不执行了

注意:构造代码块,与方法是同级别

内部类

1、设计一个类,让这个类只让指定的类使用
将这个类设计在指定类的内部
内部的类就是内部类,外部的类就是外部类
内部类也会变为独立字节文件
概念:设计在一个类内部的类就是内部类

2、内部类的作用:限制类的使用(内部类,只让Outer类使用Inner这个类)

3、内部类的分类:
1)、成员内部类:放在成员位置上的内部类
能修饰成员内部了关键字
修饰符:都可以

2)、静态内部类

3)、局部内部类:设计在一个方法里面内部类就是局部内部类

4、内部类可以方法外部类的那些成员

  • 匿名内部类

    匿名内部类是属于局部内部类
    其实是由JVM帮我创建的一个局部内部类,这个类的名字,我们不知道

    匿名内部类的作用:当我们需要创建抽象类对象或接口对象,而且这个对象只用一次,可以使用匿名内部来来简化创建中间子类的过程

枚举

1、枚举:是特殊的结构(特殊的类)

public enum 枚举名 {

}

注意:枚举是继承一个抽象类Enum

2、枚举的作用:当设计的类创建的对象个数固定,那么就可以使用枚举来代替类

注意:

枚举创建对象,直接写常量名

枚举内部的成员几乎和类一样

枚举的构造方法的访问修饰符只能是private,默认都是private

调用:

 Gender2 man = Gender2.MAN;
        man.setValue("男人");
        System.out.println(man);