Static关键字的用法
static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法:
- 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;
- 用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;
- 静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;
- 静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便。
一、修饰成员变量
package com.example.study.pro1; /** * Static关键词的使用 * 场景一 修饰成员变量 * 通过static定义的 count,其值统一存储在类里 */ public class Static1 { private static int count = 0; int id; String name; int age; public Static1(){//【构造器】与类同名就会自动调取,用于给变量赋值 id = ++count; } public String toString(){//【】当有toString时自动执行该方法 return "Id:" + id + ",Name:" + name + ",Age:" + age + ",Count:" + count; } public static void main(String[] args){ Static1 p1 = new Static1(); p1.name = "zhangsan"; p1.age = 10; Static1 p2 = new Static1(); p2.name = "lisi"; p2.age = 20; System.out.println(p1.toString()); System.out.println(p2); } }
二、修饰成员方法
package com.example.study.pro1; /** * Static成员方法的使用 * 场景二 修饰成员方法 * 通过static定义的 print,可以直接调用,不需要new */ public class Static2 { public static void print(Object o){ System.out.println(o); } public void print2(Object o){ System.out.println(o); } public static void main(String[] args){ Static2.print("Hello world!"); //使用了static定义的方法,可以直接调用,不需要去new Static2 s2 = new Static2(); //未使用static定义的方法,需要new一下才能调用成功 s2.print2("Hello world!"); } }
三、静态块用法
package com.example.study.pro1; /** * Static成员方法的使用 * 场景三 修饰成员方法 * 通过static实例化对象,都会被优先执行 */ public class Static3 { Book book1 = new Book("book1 成员变量初始化"); static Book book2 = new Book("static成员book2成员变量初始化"); public Static3(String msg){ System.out.println(msg); } Book book3 = new Book("book3成员变量初始化"); static Book book4 = new Book("static成员book4成员变量初始化"); public static void main(String[] args) { Static3 p1 = new Static3("p1初始化"); } } class Book{ public Book(String msg){ System.out.println(msg); } } /**Output * static成员book2成员变量初始化 * static成员book4成员变量初始化 * book1成员变量初始化 * book3成员变量初始化 * p1初始化 **/
四、静态导包
package com.example.study.pro1; import static com.example.study.pro1.Static4_1.*; /** * Static成员方法的使用 * 场景四 静态包导入 * 通过static导入包后,可以直接调用包里的方法 */ public class Static4 { public static void main( String[] args ) { print("Hello World!"); } /**Output * Hello World! */ }
package com.example.study.pro1; public class Static4_1 { public static void print(Object o){ System.out.println(o); } }
参考:https://www.cnblogs.com/dotgua/p/6354151.html