62,616
社区成员
发帖
与我相关
我的任务
分享
public class demo{
static String str = "aaaa";
static{
System.out.println(str);
System.out.println("bbb");
}
demo(){
str = "cccc";
System.out.println(str);
}
public static void main(String a[]){
System.out.println(str);
demo mydemo = new demo();
}
}
public class Demo{
static String str = "aaaa";
static{
System.out.println(str);
System.out.println("bbb");
}
Demo(){
str = "cccc";
System.out.println("构造函数执行~~~~~"+str);
}
public static void main(String a[]){
System.out.println("构造函数执行之前:str="+str);
Demo mydemo = new Demo();
System.out.println("构造函数执行之后:str="+str);
}
}
public class demo{
static String str = "aaaa";
static{
System.out.println(str);//即使没有任何对象,静态初始化器都要执行,所以前两行输出是aaaa,bbb
System.out.println("bbb");
}
demo(){
str = "cccc";
System.out.println(str);
}
public static void main(String a[]){
System.out.println(str);//这里的输出要看构造函数的执行情况,这种情况本句输出的是aaaa,如果构造函数先执行,
//则修改了str变量,System.out.println(str)将输出cccc,下面的那种情况!
demo mydemo = new demo();
//但是要注意一点,无论demo mydemo = new demo()与System.out.println(str)位置如何,都是System.out.println(str)先执行,也就是先输出的意思,可以试一下
//具体原因还在研究中,不知道为啥是这样!!!
public class demo{
static String str = "aaaa";
static{
System.out.println(str);
System.out.println("bbb");
}
demo(){
str = "cccc";
System.out.println(str);
}
public static void main(String a[]){
demo mydemo = new demo();
System.out.println(str);//这种情况本句输出的是cccc,因为构造函数修改了静态变量str
}
}
public class demo{
static String str = "aaaa";
static{
System.out.println(str);
System.out.println("bbb");
}
demo(){
str = "cccc";
System.out.println(str);
}
public static void main(String a[]){
System.out.println(str);
demo mydemo = new demo();
}
}