看下java代码
来源:百度知道 编辑:UC知道 时间:2024/07/02 12:15:07
public class Tarsier {
static String s="-";
public static void main(String[]args){
go();
System.out.println(s);
}
{go();}
static{go();}
static void go(){s+="s";}
}
输出是-ss 解释一下这个结果
谢啦
static String s="-";
public static void main(String[]args){
go();
System.out.println(s);
}
{go();}
static{go();}
static void go(){s+="s";}
}
输出是-ss 解释一下这个结果
谢啦
public class Tarsier {
static String s = "-";
public static void main(String[] args)
{
go();
System.out.println(s);
}
{
go();
System.out.println("in protected");
}
static
{
System.out.println("in Static befor");
go();
System.out.println("in Static after");
}
static void go()
{
s += "s";
System.out.println("in Static go");
}
}
把代码加上输出就可以跟踪判断了,看来是先执行了static{
go();
}
然后执行了main函数,
个人觉得static 当作一个类成员变量来处理了,类在构造时先初始化类成员变量就是先执行了static { go();)框,然后才是main。
要是不把static{ go();}作为类成员变量就没办法解释为什么要先初始化它了。呵呵。
通过下面的代码可以清晰地看出执行过程
public class S {
static String s = "-";
public static void main(String[] args) <