问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

程序有bug吗?我觉得我没有写错诶,在线下编译了一下也没有报错

public class HelloWorld2 {
   
    static String name; // 声明变量name
 static String sex; // 声明变量sex
 static int age;// 声明静态变量age
   
    // 构造方法
 public    void HellloWold() {
  System.out.println("通过构造方法初始化name");
  name = "tom";
 }
   
    // 初始化块
 {
  System.out.println("通过初始化块初始化sex");
  sex = "男";
 }
   
    // 静态初始化块
       static  {
  System.out.println("通过静态初始化块初始化age");
  age = 20;
 }
   
 public static void show() {
 
  System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
 }
   
 public static void main(String[] args) {
       
        // 创建对象
  HelloWorld2 hello = new HelloWorld2();
  System.out.println(hello.name);
        System.out.println(hello.sex);
        System.out.println(age);
  // 调用对象的show方法
 
  show();
 }
}



提问者:幕布斯900412 2017-09-13 14:52

个回答

  • 果丶
    2017-09-14 16:28:32

    构造方法不加void


  • 明心2018
    2017-09-14 16:14:53

    拼写错误要自己先好好检查。

  • qq__9705
    2017-09-13 15:30:37

    第一,把public void HelloWorld()中的void去掉,并将其改为public HelloWorld2()。注意你的拼写,HelloWorld,你多了一个l和少了一个r。最后show()改为hello.show();附上修改后的代码:


    public class HelloWorld2 {

        

    static String name; // 声明变量name

    static String sex; // 声明变量sex

        static int age;// 声明静态变量age

        

        // 构造方法

     public  HelloWorld2() { 

      System.out.println("通过构造方法初始化name");

      name = "tom";

     }

        

        // 初始化块

     { 

      System.out.println("通过初始化块初始化sex");

      sex = "男";

     }

        

        // 静态初始化块

           static  { 

      System.out.println("通过静态初始化块初始化age");

      age = 20;

     }

        

     public static void show() {

     

      System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);

     }

        

     public static void main(String[] args) {

            

            // 创建对象

      HelloWorld2 hello = new HelloWorld2();

      System.out.println(hello.name);

      System.out.println(hello.sex);

      System.out.println(age);

      // 调用对象的show方法

     

      hello.show();

     }

    }


  • 慕前端5551039
    2017-09-13 15:27:20

    构造方法写错了,构造方法没有返回值且构造方法名称要与类名相同,代码改成下面试下:

      // 构造方法
     public    HelloWorld2() { 

  • 宝慕林1378670
    2017-09-13 15:20:08

    show前面要加对象名 hello.show();