為什么不能用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();
}
}
謝謝了~
2016-02-27
我覺得是你把初始化塊與構造方法搞混了 初始化塊不用寫在構造方法中 單獨寫就好了~
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-26
其實我說錯了,應該是static修飾的成員變量,在用構造方法初始化該變量時,構造方法里不能使用static關鍵字,但在類內非方法區域,可以使用static關鍵字修飾的初始化塊初始化該靜態變量,也可以不使用static關鍵字的初始化塊初始化該靜態成員變量。
2016-02-26
因為java沒有用static修飾初始化塊的。
2016-02-26
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();
}
}
2016-02-26
靜態初始化塊不能寫在構造方法中
2016-02-26
你的大括號多了一對
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();
}
}