在类中定义变量的时候,加上static后可在同包不同类中通过类名.变量名直接调用
定义:修饰符 static 数据类型 变量名;
调用:类名.变量名
static变量又称静态变量。静态变量在内存中只有一个,所有的对象都可以调用;而非静态变量在创建对象时就被创建,各个对象的非静态变量互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
注意:static不允许用来修饰局部变量。
static方法又称静态方法。静态方法不通过对象就可以进行访问。
public class Main {
public static void main(String [] args) {
//直接调用,未创建对象
Main.play();
play();
}
public static void play() {
System.out.println("<<<<");
}
}
静态方法不依赖与任何对象,没有对象就没有this,所以没有this.静态方法。
在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法和变量是依赖于具体的对象才能调用。
注意:在静态方法中不能访问非静态成员方法和非静态成员变量,但在非静态方法中可以访问静态成员方法和变量。
想要在不创建对象的情况下调用某个方法,可以将这个方法设置为static方法。最常见的static方法是main方法(主函数)。
static块可以置于类中的任何地方,static块不能出现在方法内部,类中可以有多个静态块。在类被初次加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
static块可以用来优化程序性能:只会在类加载的时候执行一次。
普通方法:每次调用都会创建新的对象
public void chat() {
String name1 = "名字1";
String name2 = "名字2";
System.out.println(name1+"和"+name2+"在聊天");
}
静态块:只需要在初始化的时候创建一次对象
private static String name1,name2;
static {
name1 = "名字1";
name2 = "名字2";
System.out.println(name1+"和"+name2+"在聊天");
}
public void chat() {
System.out.println(name1+"和"+name2+"在聊天");
}
导入类:
import packageName className; //导入指定的类
import packageName.*; //导入包中所有的类
静态导入:
import static packageName.className.methonName; //导入某个特定的静态方法
import static packageName.className; //导入类中的所有静态成员
导入后,可以在当前类中直接用方法名调用静态方法,不必再用className.methonName来访问。
本文借鉴内容:http://www.cnblogs.com/dolphin0520/p/3799052.html
http://www.weixueyuan.net/view/6003.html