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


