面向对象
1. static
是什么、能干什么
static 是一个修饰符关键字,用来区别静态和成员属性
static修饰符
类体中使用static修饰的变量,是静态变量
类体中使用static修饰的方法,是静态方法
类体中使用static修饰的语句块,是静态语句块
怎么用
// 静态变量
static int age =18;
// 静态方法
public static void m1(){
}
static{
System.out.println("静态语句块1");
}
static{
System.out.println("静态语句块2");
}
public static void main(String[] args) {
System.out.println("main方法");
}
静态变量和静态语句块 都是加载阶段进行初始化和执行,而main方法是在加载完之后,进入运行时,才会执行。
所以,静态变量和静态语句块的优先级,大于main方法
*类加载的时间*: 访问一个类的静态属性的时候,会把该类载入到内存中。
public class test {
static{
System.out.println("test静态语句块");
}
static int age=123;
}
public static void main(String[] args) {
System.out.println("main方法");
System.out.println(i2);
System.out.println(test.age);
}
2、实例语句块
实例语句块,等同于成员方法,只是没有名字
因为成员属性需要依赖于对象。所以创建对象之后,立刻执行,创建对象一次,就执行一次。
{
System.out.println("实例语句块1");
}
{
System.out.println("实例语句块2");
}
public static void main(String[] args) {
new Static_02_1();
new Static_02_1();
}
3、静态和成员
当所有对象拥有相同的属性和值,使用静态变量
当所有对象拥有相同属性和不同的值(可以相同),使用成员变量
当一个方法中有非静态的引用(使用了成员属性),需要使用成员方法
当一个方法中没有成员属性的引用,可以使用静态方法