static修饰的属性是静态成员,类对象共享,类加载时产生,销毁时释放,生命周期长。
static修饰的方法,用类目.成员方法调用
static不能用来修饰类,但是可以用来修饰代码块即用中括号包住代码块,然后用static修饰中括号
static{
System.out.println("我是静态代码块1");
}//静态代码块
不能用来修饰局部变量
static修饰的成员方法可以直接访问成员变量
静态方法中不能直接访问同一个类中的非静态成员,只能直接调用同一个类中的静态成员
只能通过对象实例化后,对象.成员方法的方式访问非静态成员
无论产生多少实例,静态代码块只调用一次
在方法中用中括号包起来的是普通代码块,是顺序执行的,直接用中括号包括的为构造代码块,是优先执行的非顺序,当构造代码块用static修饰时,此时代码块就变为静态代码块
普通代码块:顺序执行,先出现,先执行
构造代码块:创建对象时调用,优先于构造方法执行,每此创建实例就执行一次
静态代码块:类加载时调用,优先于构造代码块执行,无论多少实例执行一次
11.一个中括号包裹的就是一个代码块,在此代码块中定义的局部变量是不能出中括号的
public void run(String name) {
{
int temp=12;
System.out.println("我是普通代码块1,temp="+temp);
}//普通代码块
int temp=14;//这种定义会与下面的重合,这种非方法的重合是不行的,会报错,如果是在方法中,重新定义则会发生局部先起作用,但是不是方法的代码块,是不会这样用的。
System.out.println(name + "快跑,temp="+temp);
{
/ int temp=13;
System.out.println("我是普通代码块2,temp="+temp);
}//普通代码块
}