静态属性或方法是随着类的加载而加载的,可以通过“类 . 静态方法或属性”的方式进行调用
静态方法中,只能调用静态的方法或属性
非静态方法中,既能调用非静态方法和属性,也能调用静态方法或属性
开发中,如何确定一个属性是否要声明为static的?
>属性是可以被多个对象所共享的,不会随着对象的不同而不同
>类中的常量也都声明为static的
开发中,如何确定一个方法是否要声明为static的?
>操作静态属性的方法,通常就设置为static的
>工具类中的方法习惯上声明为static的
区分单例模式的饿汉式与懒汉式
饿汉式:对象加载的时间过长,天然是线程安全的
懒汉式:延迟对象的创建,目前的写法:线程不安全
main()方法的使用说明:
1、main()方法作为程序的入口
2、main()方法也是一个普通的静态方法
2、main()方法可以作为我们与控制台交互的方式(以前:使用Scanner)
代码块:
1、作用:用来初始化类、对象
2、代码块如果有修饰的话,只能是static
3、分类:静态代码块、非静态代码块
静态代码块:
内部可以有输出语句
随着类的加载而执行,且随着类的加载只执行一次
初始化类的信息
如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
静态代码块的执行要优先于非静态代码块的执行
非静态代码块:
内部可以有输出语句
随着对象的创建而执行
每创建一个对象,就执行一次非静态代码块
可以在创建对象时,对对象的属性等进行初始化
如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
由父及子,静态先行
final 可以用来修饰类、方法、变量
final修饰类:此类不能被其他类所继承。比如:String类、System类、StringBuffer类
final修饰方法:表明此方法不能被重写。比如:Object类getclass()
final修饰变量:此时的“变量”称为常量
static final 用来修饰属性:全局常量