面试官:static关键字你了解吗?说一下你的认识。
小白:啊.....有点晕呀,这么宽泛的问题,我该从哪回答呢?头脑一片空白。让我想想......
面试官:没事,不要着急,慢慢想。
小白:static关键字可以用来修饰变量和方法,这个变量和方法可以通过类名来访问。
面试官:嗯,还有吗?
小白:........
面试解析:
static关键字经常出现在面试题中,以各种形式来考察你对static关键字的认识,这里呢我就给大家讲讲static在面试中都考察你的哪些基本知识。
1、static的本质:static关键字可以与this关键字对比来记忆更容易理解一些,this关键字表示的是当前的对象,只能用在方法内部表示当前调用此方法的那个对象。static关键字可以用来修饰方法和变量,它所修饰的方法和变量是不属于任何对象的,而是属于这个类,并且不需要创建这个类对象就能访问,这是static的本质。
2、static 修饰的变量:static修饰的变量也叫静态变量,静态变量在内存中只有一个拷贝,JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问,当然也可以通过对象来访问,但是基本上不这样用。
3、static修饰的方法:static修饰的方法也叫静态方法,静态方法不依赖于任何对象就可以进行访问,所以在静态方法中不会存在必须要通过对象来访问的变量和方法,但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。
4、static代码块:static代码块在进行类加载的时候就会执行,也不属于任何对象,无论写在类的任何位置都会先被执行。
对于static的基础知识也就这么多,把握住本质在各种面试题跟前都不会吃亏。