这是一个关于Java中static的一个演示程序,先给出代码,在思考这程序输出的时候我做简单的介绍:
/**
* @author firethinks
*
*/
public class StaticDemo {
static int i = 7;
int j;
static{
int j = 9;
int i = 8;
int k = j + i;
System.out.println("这是静态代码块;最先执行,只执行一次\n" + j+k);//输出的不是j+k的和。
}
public void print(){
j++;
i++;
{
int i = 9;
System.out.println("这是普通代码块:\ni:" + i);
}
System.out.println("静态变量i:" + i + "\n实例变量j:" + j);
//System.out.println("静态代码块k:" + k); //错误的
}
public static int max(int x,int y){
i = x;
//j = y;//错误的
return i>y?i:y;
}
public static void main(String[] args) {
System.out.println("这是main方法:");
StaticDemo sd = new StaticDemo();
sd.print();
//以下三种都可以,但前两种方法不太规范
int i = sd.max(7,8);
int j = max(3,4);
int k = StaticDemo.max(i,j);
System.out.println(i);
System.out.println(j);
System.out.println(k);
}
}
在Java中静态的方法只能调用静态的变量和静态方法,而非静态的方法没有限制。静态的代码块在类创建时最开始调用,而且只调用一次。
以下是程序的输出:
这是静态代码块;最先执行,只执行一次
917
这是main方法:
这是普通代码块:
i:9
静态变量i:8
实例变量j:1
8
4
8