更多详情请戳-原文点我,点我
java中有很多的关键字,这些关键字在面试的时候还是在编写的时候的使用以及原理的了解都会显示出一个开发人员的技术水平。
static作为java中的关键字,可以修饰变量,方法,类,代码块,还有一个被忽略的功能就是静态导包。
一:修饰变量
static修饰变量就是经常听说的静态变量,这个变量不属于一个对象,属于一个类,在类加载的时候就被分配了内存。在内存中只有一个复制。调用方法也只能是Class.变量名,实力变量(非static修饰的变量)存在多个复制,但是需要注意的事不能再方法体中定义一个静态变量
二:修饰方法
static修饰方法表明这个方法属于一个类,如果没有被修饰,则说明这个方法就是对象的方法。注意的是在static方法中不能使用this和super关键字(有可能调用这个方法的时候,类中的对象还没有被创建出来)。静态方法最重要的一个是实现一个单例。然而单例又分为饿汉式和懒汉式,下面分别来展示两种单例模式:
1:饿汉式(在还没有调用的时候就创建)
public class SingleTonDemo2 {
private static SingleTonDemo2 instance=new SingleTonDemo2();
private static SingleTonDemo2 getInstance(){
return instance;
} }
2:饱汉式(在调用的时候在new对象)
public class SingleTonDemo {
private static SingleTonDemo instance=null;
public SingleTonDemo(){};
public static SingleTonDemo getInstance(){
instance=new SingleTonDemo();
return instance;
}
}
三:静态代码块
静态代码块是独立于静态方法和静态变量的,一般的作用就是给静态变量赋值,静态代码块的执行时间是当类被加载后就执行,如果有多个代码块,则会按照先后顺序执行。比如下面的静态代码块:
private static int a;
static{ a=4;}
四:静态内部类
静态内部类一般是指被static修饰的内部类,一般可以做初始化变量的值,和初始化内存的一些值。静态内部内不能定义的和实力类相同的名字,而且是在外部类实例化后在去实例化内部类。这里需要注意他的调用方式。如下:
public class StaticInnerClass {
private static int a=4;
static class innerClass{
void printNum(){
System.out.println(a);
}}
public static void main(String[] args) {
StaticInnerClass.innerClass innerclass=
new StaticInnerClass.innerClass();
innerclass.printNum();
}}
五:静态导包
使用import static 代替import
网友评论