static修饰符
静态变量
- static变量只依赖于类存在(通过类即可访问),不依赖于对象实例存在。
- 所有实例共享该字段。
静态方法
- 调用静态方法不需要实例,通过类名就可以调用。
- 在静态方法中,只能使用静态变量,不能使用非静态变量,也不能使用this。
- 静态态方法常用于工具类和辅助方法。
static块
- 这段代码只运行一次,只在类第一次被加载时调用。
- 执行顺序:static块 > 匿名块 > 构造函数。
final修饰符
- final的类:不能被继承。
- final方法:父类中如果有final的方法,子类中不能改写此方法。
- final变量:基本类型不能修改值,对象类型不能修改指针。
Java中的常量
public static final
用来修饰一个常量。
接口内定义的变量默认是常量。
常量池
Java为很多基本类型的包装类/字符串都建立常量池。
常量池:相同的值只存储一份,节省内存,共享访问。
Java为Boolean, Byte, Character, Short, Int, Long, String 的常量赋值建立常量池,没有包括Float和Double。
基本类型的包装类和字符串有两种创建方式:
–常量式(字面量)赋值创建,放在栈内存 (将被常量化)。
Integer a = 10;
String b = “abc”;
–new对象进行创建,放在堆内存 (不会常量化) 。
Integer c = new Integer(10);
String d = new String(“abc”);
这两种创建方式导致创建的对象存放的位置不同。