Static
修饰符 static
针对一个类所有对象的共性属性,JAVA采用static成员完成统一调用。
static在变量或者方法之前,表明它们是属于类的,称为类方法(静态方法)或者类变量(静态变量)。若无static修饰,则是实例方法(可以通过对象“.”来调用)和实例变量。
和类的其他成员属性不同,static成员并不是存放在对象对应的堆空间中。而是将static成员存放在方法区中,每个对象的相应static共享一段内存。
修饰类
public class T1{
static t1_1
{
}
}
修饰方法
在成员方法前加static关键字,可以将其声明为静态成员方法静态成员方法只能对方法自生的局部变量或者类的静态成员变量进行操作(可以见以下例子)静态成员方法没有this引用和静态成员变量一样,可以通过类名或者对象访问静态成员方法(建议使用类名)
修饰属性
可以将static和final联合起来使用当一个变量被static和final共同修饰时,其和仅用static修饰的变量的差异在于声明时必须初始化,而且在整个程序生命周期内不能再对这个变量进行二次赋值static final常量通常用于保存整个应用程序共享的常量值staticimport也可以使用通配符,如:import static java.lang.Math.*表示导入Math类中的所有的静态成员。
举一个例子
package demo3
;
import com
.sun
.javafx
.animation
.TickCalculation
;
public class test_static {
public static void main(String
[] args
) {
T1 t1
=new T1();
T1 t2
=new T1();
System
.out
.println("***静态属性**********************");
System
.out
.println(t1
.a
);
System
.out
.println(t1
.a
--);
System
.out
.println(t1
.a
);
System
.out
.println("***\"所有对象\"共享该成员变量********");
System
.out
.println(t2
.a
);
System
.out
.println(t2
.a
--);
System
.out
.println(t2
.a
);
System
.out
.println("***\"所有对象\"共享该成员变量********");
System
.out
.println("***非静态属性*********************");
System
.out
.println(t1
.b
);
System
.out
.println(t1
.b
--);
System
.out
.println(t1
.b
);
System
.out
.println("************");
System
.out
.println(t2
.b
);
System
.out
.println(t2
.b
--);
System
.out
.println(t2
.b
);
System
.out
.println("************");
T1
.t1_1();
t1
.t1_1();
t1
.t1_2();
}
}
class T1{
static int a
=7;
public int b
=3;
public static void t1_1() {
T1 tiT1
=new T1();
System
.out
.println(a
);
System
.out
.println(tiT1
.b
);
tiT1
.t1_2();
}
public void t1_2() {
System
.out
.println(a
);
System
.out
.println(b
);
t1_1();
}
}
运行结果:后面会一直运行下去