static----静态的意思 举个例子class T{ int a=0; void print(){ System.out.println(a); } } public class A{ public static void main(String[] args){ T s1=new T(); s1.a++; s1.print(); T s2=new T(); s2.a++; s2.print(); } }
输出应该是:1 1对象s1里的变量a 和 s2里的a是独立的,没有关系,所以,各自自增,没问题吧现在加个staticclass T{ static int a=0; /*static加在这里,定义静态变量*/ void print(){ System.out.println(a); } } public class A{ public static void main(String[] args){ T s1=new T(); s1.a++; s1.print(); T s2=new T(); s2.a++; s2.print(); } }
输出是:1 2现在s1里的a和s2里的a是同一个,所以自增了两次,第二次输出为2也就是说:static变量是这个类的所有对象共有的,只有这么一个,你在这个对象里修改了它,在其他对象里一样变了
- static方法:一般方法要调用,先创建类,在new对象,如上面的print这个方法,但static方法可以不用建对象,直接调用,这种方法我们一直用,如:public static void main(String[] args){}
- static变量可以用来统计你new了多少个对象,非静态的就不行了
<pre name="code" class="java">package com.buaa.classEx;
public class staticBlock {
// 定义一个普通的main()方法
private static int counter;
public static void main(String args[]) {
System.out.println("This is main method.");
System.out.println("counter="+counter);
}
// 定义一个静态代码块
static {
System.out.println("This is static block.");
counter = 5; // 这是一个局部变量,只在本块内有效
}
}
执行结果:
This is static block.
This is main method.
counter=5