日期:2014-05-20 浏览次数:20838 次
class num1{
    
        String a;
        
    
}
public class p77 {
    public static void main(String[] args) {
         num1 i = new num1();
        System.out.print("A= "+i.a);
        
        // TODO 自动生成方法存根
    }
}
class num2{
    num2(){
        System.out.println("abc ");
    }
}
public class p77_2 {
    public static void main(String[] args) {
        
        new num2();
        
       
        // TODO 自动生成方法存根
    }
}
class B {
   String s1 = "s1"; //这样就使定义时初始化, String s1 = new String("s1")也是
   String s2;
   public B() {s2 = "s2";} //这样就是构造器初始化
}
------解决方案--------------------
回答下你的第二题
Java code
public class MyTest {
   String s1 = "abc";
   String s2;
   public MyTest() {
       s2 = "efg";
   }   
}
初始化的过程是这样的。
在你new MyTest();
时先会执行
String s1 = "abc";
String s2;
这样s1被初始化成了"abc"
s2被初始化成了null
然后执行构造方法
s2成了"efg"
区别就是s2被初始化了2回。
s1被初始化了1回。  
------解决方案--------------------
什么叫一个在定义时就被初始化了的String域?
指的是在定义该成员属性时就给该属性赋值: String s1 = "abc";