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修饰的变量
- 常量的命名规范为全大写;
- 特点:初始化时只能通过在声明时初始化,否则会编译错误
- 常量在编译时,会被提花为实际存储的值
本文来自博客园,作者:LXXXXxZz,转载请注明原文链接:https://www.cnblogs.com/l11111/p/16141429.html