static 关键字 用于修饰成员(成员变量和成员方法)
特点:
1.随着类的加载而加载
2.只加载一次,就会一直存在,知道类消失就一起消失了
3.优先于对象加载,被所有的对象共享
4.可以直接被类名调用
//测试static关键字
public class Test4_Ststic {
public static void main(String[] args) {
//静态资源优先于对象加载(没创建对象也能用静态的)
//可以通过类名直接调用
System.out.println(Student.name);
//只加载一次
Student s=new Student();
s.name="jack";
Student s1=new Student();
//如果只加载一次应该内存地址都一样
System.out.println(s1.name);
}
}
//创建类
class Student{
//用ststic关键字属性变成静态的
static String name;
int age;
public void eat() {
System.out.println("chichichi");
}
//静态方法
public static void sleep() {
System.out.println("睡觉");
}
}
栈:先进后出 常用于存变量
堆:常用于存对象
方法区:分为静态区和非静态区 常用于存常量、静态变量、方法
静态资源不能调用非静态资源
静态资源能调用静态资源
即静态只能调静态
非静态啥都可以调
静态代码块
随着类的加载而加载,并且只被加载一次,一般用于项目的初始化
static{
…
}
final关键字
final是最终的意思,可以修饰类,方法,成员变量
特点:
1.被final修饰的类,不能被继承
2.被final修饰的方法,不能被重写
2.被final修饰的变量是个常量,不能被改变
4.常量的定义形式:final 数据类型 常量名 = 值