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();
}
}
谢谢了~
我觉得是你把初始化块与构造方法搞混了 初始化块不用写在构造方法中 单独写就好了~
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();
}
}
其实我说错了,应该是static修饰的成员变量,在用构造方法初始化该变量时,构造方法里不能使用static关键字,但在类内非方法区域,可以使用static关键字修饰的初始化块初始化该静态变量,也可以不使用static关键字的初始化块初始化该静态成员变量。
因为java没有用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();
}
}
静态初始化块不能写在构造方法中
你的大括号多了一对
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();
}
}