为什么不能用static修饰这个初始化块?

来源:8-10 Java 中的 static 使用之静态初始化块

汤钺

2016-02-26 16:38

public class HelloWorld {

String name1;

String name2;

static String name3;

public HelloWorld(){

{

name1="周杰伦";

System.out.println("偶像1"+name1);

}

{

name2="张学友";

System.out.println("偶像2"+name2);

}

      static {

name3="王力宏";

System.out.println("偶像3"+name3);

}

}

public static void main(String[] args){

HelloWorld hello=new HelloWorld();

System.out.println("name1:"+hello.name1);

System.out.println("name2:"+hello.name2);

System.out.println("name3:"+name3);

HelloWorld hello2=new HelloWorld();

}

}

谢谢了~http://img.mukewang.com/56d00ef0000177e305870430.jpg

写回答 关注

6回答

  • weibo_馥小郁_0
    2016-02-27 11:11:41
    已采纳

    我觉得是你把初始化块与构造方法搞混了 初始化块不用写在构造方法中 单独写就好了~

    public class HelloWorld {

    String name1;

    String name2;

    static String name3;

    {

    name1="周杰伦";

    System.out.println("偶像1"+name1);

    }

    {

    name2="张学友";

    System.out.println("偶像2"+name2);

    }

    static {

    name3="王力宏";

    System.out.println("偶像3"+name3);

    }


    public static void main(String[] args){

    HelloWorld hello=new HelloWorld();

    System.out.println("name1:"+hello.name1);

    System.out.println("name2:"+hello.name2);

    System.out.println("name3:"+name3);

    HelloWorld hello2=new HelloWorld();

    }

    }


    汤钺

    非常感谢!

    2016-02-27 16:56:36

    共 1 条回复 >

  • 冲啊
    2016-02-26 17:43:43

    其实我说错了,应该是static修饰的成员变量,在用构造方法初始化该变量时,构造方法里不能使用static关键字,但在类内非方法区域,可以使用static关键字修饰的初始化块初始化该静态变量,也可以不使用static关键字的初始化块初始化该静态成员变量。

  • 冲啊
    2016-02-26 17:32:11

    因为java没有用static修饰初始化块的。

  • erxiaozun
    2016-02-26 17:28:25

    public class HelloWorld {

    String name1;

    String name2;

    static String name3;

    public HelloWorld(){

    {        //此处应该省略一个括号。。。。。。。

    name1="周杰伦";

    System.out.println("偶像1"+name1);

    }

    {

    name2="张学友";

    System.out.println("偶像2"+name2);

    }

          static {

    name3="王力宏";

    System.out.println("偶像3"+name3);

    }

    }                //此处括号应该省略。。。。

    public static void main(String[] args){

    HelloWorld hello=new HelloWorld();

    System.out.println("name1:"+hello.name1);

    System.out.println("name2:"+hello.name2);

    System.out.println("name3:"+name3);

    HelloWorld hello2=new HelloWorld();

    }

    }

  • ababa
    2016-02-26 17:25:05

    静态初始化块不能写在构造方法中

  • qq_天意_6
    2016-02-26 17:18:22

    你的大括号多了一对

    public class HelloWorld {

    String name1;

    String name2;

    static String name3;

    public HelloWorld()

    {

    name1="周杰伦";

    System.out.println("偶像1"+name1);

    }

    {

    name2="张学友";

    System.out.println("偶像2"+name2);

    }

    static {

    name3="王力宏";

    System.out.println("偶像3"+name3);

    }


    public static void main(String[] args){

    HelloWorld hello=new HelloWorld();

    System.out.println("name1:"+hello.name1);

    System.out.println("name2:"+hello.name2);

    System.out.println("name3:"+name3);

    HelloWorld hello2=new HelloWorld();

    }

    }


Java入门第二季 升级版

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

530099 学习 · 6086 问题

查看课程

相似问题