static表示“静态”的意思,可以用来修饰成员变量和成员方法,还有静态代码块 和 静态内部类。
static的主要作用在于创建独立于具体对象的域变量或者方法 简单理解: 被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。 并且不会因为对象的多次创建而在内存中建立多份数据
普通代码块
在执行的流程中 出现的 代码块, 我们称其为普通代码块。
构造代码块
在类中的成员代码块, 我们称其为构造代码块, 在每次对象创建时执行, 执行在构造方法之前。
静态代码块
在类中使用static修饰的成员代码块, 我们称其为静态代码块, 在类加载时执行。 每次程序启动到关闭 ,只会 执行一次的代码块。
同步代码块
在后续多线程技术中学习。
面试题:
构造方法 与 构造代码块 以及 静态代码块的执行顺序:
静态代码块 --> 构造代码块 --> 构造方法
编写一个衣服类, 每个衣服对象创建时需要自动生成一个序号值。
要求:每个衣服的序号是不同的, 且是依次递增1的
public class ClothesTest {
public static void main(String[] args) {
Clothes c1=new Clothes();
Clothes c2=new Clothes();
Clothes c3=new Clothes();
System.out.println(c1.getNumber()+","+c2.getNumber()+","+c3.getNumber());
}
}
class Clothes{
private static int num=1; //共用的静态变量
private int number;
Clothes(){ //对象创建时调用构造方法
this.number=Clothes.num; //创建时赋值
Clothes.num++; //序号递增
}
//获取编号
public int getNumber() {
return number;
}
}
控制台输出结果为:1,2,3
总结:若需要在对象创建时,就对其进行一些操作,则在无参构造方法中进行编写相关操作代码,即可。
原因:对象在创建时,就自动调用无参构造方法,并完成方法内的相关操作。
static修饰的变量或方法,为静态变量或静态方法,可由类直接调用,为所有对象共有;且被存放在方法区中。
构造方法:与类同名,无返回值。构造方法可重载。
原文:https://www.cnblogs.com/xingkongwu-yu/p/14604084.html