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

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

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://img1.sycdn.imooc.com//56d00ef0000177e305870430.jpg

正在回答

6 回答

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

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();

}

}


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

汤钺 提问者

非常感谢!
2016-02-27 回复 有任何疑惑可以回复我~

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

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

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

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

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();

}

}

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

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

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

你的大括号多了一对

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();

}

}


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

举报

0/150
提交
取消

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

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