JAVA构造函数

public class T1 {
private static String string;
private static T1 t1=new T1();
//private T1 t12=new T1();
public T1(){
System.out.println("11111");
}
public static void ttt(){
System.out.println("tttttt");
}
public static void sss(){
System.out.println("ssssss");

}
}
-------------分割线-------------
public class Test {
public static void main(String[] args) {
T1.sss();
T1.ttt();
}
}
------------输出结果----------
11111
ssssss
tttttt

----------------
为什么T1的构造函数只执行过一次?
我调用过两次那个类的方法..又没有显示实例T1类...
他为什么不是隐式创建的两个T1类....
而在T1类中...我可以创建静态的一个自己类变量..而不能创建非静态的呢?
private static T1 t1=new T1();--->这句能执行
//private T1 t12=new T1();------->这句不能执行
为什么呢?????

你不理解这个程序,是因为你不理解 ‘静态属性’
你在程序开头 定义了静态对象,跟定义静态变量是一样的,程序一开始就加载了这个对象,而这个new出来的对象只有一个,也只能有一个。都共享这个实例化。
所以你准备new 出第二个对象就会抛出异常..你要用静态再new 出一个对象,
他就会开辟另一个内存空间。再次调用构造方法

你要是学完单例和内存分析,你会更好的理解这个程序
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-02
静态的对象在整个类中只有一份。
第2个回答  2009-08-02
//private T1 t12=new T1();------->这句不能执行
你就没调用过,声明t12这个类和你调用他是2回事
静态方法调用语法 : 类.方法
而构造发放是你在NEW的时候才调用啊
只能在方法里调用测试,但是由于是静态方法,所以你还是调用静态的去把
写完才看见悬赏0分....
第3个回答  2009-08-02
静态的对象。其实可以用类替代
第4个回答  2009-08-02
System.out.println("11111");

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网