为了账号安全,请及时绑定邮箱和手机立即绑定

为什么只执行了静态初始化代码块?没有执行非静态初始化代码块?

package newprac;

public class Static {
String match;//声明String型变量name
String time;//声明char型变量sex
static String score;//声明整型变量age
//通过构造方法赋值变量name
public Static(){
 match = "football match";
 System.out.println("比赛"+match);
}
{
 time = "02:00";
 System.out.println("时间"+time);
}
static{
 score = "2:1";
 System.out.println("比分"+score);
}
public static void main(String[] args){
}
}

输出结果:

比分2:1

正在回答

3 回答

public class Static {
    String match;//声明String型变量name
    String time;//声明char型变量sex
    static String score;//声明整型变量age
    //通过构造方法赋值变量name
    public void Static(){
    match = "football match";
    System.out.println("比赛"+match);
    }
    {
    time = "02:00";
    System.out.println("时间"+time);
    }
    static{
    score = "2:1";
    System.out.println("比分"+score);
}   
public static void main(String[] args){
   
    Static st = new Static();
    st.Static();
    
}

}


0 回复 有任何疑惑可以回复我~
#1

打不死的小杨 提问者

但是为什么同样是初始化块,静态初始化块static{}就不需要在main函数里使用构造方法创建对象,而可以直接输出结果?是因为静态初始化块和静态方法一样,都不需要通过对象就可以直接访问吗?
2016-03-22 回复 有任何疑惑可以回复我~
#2

慕前端1869866 回复 打不死的小杨 提问者

因为主方法就是一个静态方法,可以直接访问类中的静态成员变量。
2016-03-23 回复 有任何疑惑可以回复我~
#3

打不死的小杨 提问者 回复 慕前端1869866

好的,非常感谢!
2016-03-23 回复 有任何疑惑可以回复我~

在main函数中  构建一个方法   Static bf=new Static();

然后调用它就可以了                    bf.Static();

0 回复 有任何疑惑可以回复我~

main函数里面没有建立对象

0 回复 有任何疑惑可以回复我~
#1

Allenyep

main函数里面加一句 Static sta=new Static(); 就可以了
2016-03-22 回复 有任何疑惑可以回复我~
#2

打不死的小杨 提问者

但是为什么同样是初始化块,静态初始化块static{}就不需要在main函数里使用构造方法创建对象,而可以直接输出结果?是因为静态初始化块和静态方法一样,都不需要通过对象就可以直接访问吗?
2016-03-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530629    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

为什么只执行了静态初始化代码块?没有执行非静态初始化代码块?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信