static应该是在初始化时候执行,不是调用的时候执行,可以说是在编译的时候。
解决方案 »
- linux下weblogic9.2发布,远程访问
- 关于ajax验证用户名是否存在的问题,希望大家给点意见,谢谢~~
- java如何获取最近三周每周排名第一的数据
- JSF实现选项卡的可用和不可用报错???
- 关于JSON循环的问题
- 小数点的判断和字符截取的问题
- Hibernate引用JNDI数据源后配置连接池。
- 我学JAVA.求高手指点迷津!高分感激!!!!
- 我想在IE中直接打开EXCEL文件,在WEB.XML中加入MIME-MAPPING后为何会失败
- 请问下,这个jar包哪里有下载?swagger-springmvc-0.7.0-SNAPSHOT.jar
- Struts中赋初值的问题
- 请大虾帮忙:关于Java调用oracle imp/exp问题
是编译的时候还是调用的时候执行。方法被定义为static就表示这个方法不需要声明类的实例即可执行;比如main方法。而某个类成员被定义为static的时候,它就几乎完全独立于这个类了。
根据think in java2 还有java参考大全中所述,static方法在类刚刚被加载的时候就执行了。
因此,可以说,static方法是在对程序进行解释的时候执行。
比如
class UseStatic{
static int a = 3;
static int b; static void meth(int x)
{
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
} static {
System.out.println("Static block initialized.");
b = a*4;
}
public static void main(String[] args)
{
meth(42);
}
}
一旦UseStatic被装载,所有的static语句被执行。首先,a被设置为3,接着static块执行(打印一条消息),最后,b初始化为a*4或12。然后调用main(),main()调用meth(),把42传递给x。3
个println()语句引用两个static变量a和b,以及局部变量x。
要说static块语句是在类的构造方法之前执行
static{}就是在类装载的时候执行的
且它执行比构造器还要先!
class test
{
public static int i=method1();
private static int j=method2();
public static int method1()
{
System.out.println("test.method1");
return 4;
}
private static int method2()
{
System.out.println("test.method2");
return 6;
}
}public class test1 extends test
{
int e=method3();
static int w=method3();
public static int method3()
{
System.out.println("test1.method3");
return 6;
}
test1()
{
System.out.println("test1.test1()");
} public static void main(String args[])
{
test1 t1=new test1();
test1 t2=new test1();
}
}
我想这个能说明一些问题吧
to: gdp()
请问,这样为什么就不运行method拉class test
{
public static int i=method1();
private static int j=method2();
public static int method1()
{
System.out.println("test.method1");
return 4;
}
private static int method2()
{ System.out.println("test.method2");
return 6; }
}
public class test1 {
public static void main (String[]args) {
String s = new String ("Hello");
modify(s);
System.out.println(s);
} public static void modify (String s) {
s += "world!";
System.out.println(s);
}
}