li

XXXXX

 

static 和 final(java)

static:

1.1static修饰成员变量:

  • 使用static修饰的成员变量不在对象的数据结构,而是类的基本信息(参数)
  • 使用static修饰的成员可以直接使用,类名.成员的方式访问,而不需要再new对象了;
    • 使用static修饰的成员存储在方法区(方法区中的成员独一份),static修饰的成员只有一份;
    • static 中无this;
public class TestStatic { 
    static int age = 0;//存储在方法区 且独一份 
    int score = 0; 
    public TestStatic() { 
        age += 1; 
        score += 1; 
    }
    public static void main(String[] args) { 
        new TestStatic();//age : 1 score : 1 
        new TestStatic();//age : 2 score : 1 
        System.out.println(TestStatic.age);//2 
        System.out.println(new TestStatic().score);//score : 1 age:3 
    } 
}

1.2 static修饰方法:

  • static修饰的方法使用类名区调用,他不涉及对象的操作;
  • static一把用在工厂方法或者类中;
  • static方法不能调用非satic方法

1.3 static块和非static块:

static {
    //静态代码块
}
{
    //非静态代码块
}

静态代码块是属于类的一部分,在类加载期间就会执行完毕,一般用来加载静态资源(图片,音频等)

1.4 总结:

静态修饰的成员可以直接使用类名去调用

静态修饰的成员会优先加载,在类的加载期间就完成了加载

静态修饰方法不能调用非静态成员,但非静态方法可以调用静态的成员

静态修饰的成员存储在方法区中,且独一份

final:

2.1 final修饰变量:

  • final修饰的成员变量不可变;
  • 初始化的方式只有两种:
  • 声明时初始化和构造方法初始化

2.2 final修饰方法:

final修饰的方法不能被重写,意义:造成不经意的重写:

public final void show(){}//final关键字和public关键字顺序无关可以互换

2.3 final修饰类;

  • final修饰的类不能被继承;
  • 常见的final修饰的类由String,Math等等;
  • 意义:防止滥用继承,可以保护不被继承修改,降低对系统造成的危害

2.4 常量:

  • 常量:static final修饰的变量
  • 常量的命名规范为全大写;
  • 特点:初始化时只能通过在声明时初始化,否则会编译错误
  • 常量在编译时,会被提花为实际存储的值
 

posted on 2022-04-13 17:59  LXXXXxZz  阅读(47)  评论(0编辑  收藏  举报

导航