这是我的例子:Session.java
package test;
public class Session {
private static Session instance;
static {
String className="test.Session";
try {
instance=(Session)Class.forName(className).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Session getInstance() {
return instance;
}
public void show(String name){
System.err.println(name);
}
}TestClass.javapackage test;
public class TestClass {
public static void main(String[] args) {
Session session=Session.getInstance();
session.show("name");
Session session2=Session.getInstance();
session2.show("na00000000000000me");
}
}
想问下static  在程序中的作用是什么?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【sfq12345678】截止到2008-08-01 17:59:55的历史汇总数据(不包括此帖):
    发帖的总数量:16                       发帖的总分数:500                      每贴平均分数:31                       
    回帖的总数量:34                       得分贴总数量:8                        回帖的得分率:23%                      
    结贴的总数量:16                       结贴的总分数:500                      
    无满意结贴数:2                        无满意结贴分:40                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:12.50 %               无满意结分率:8.00  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=sfq12345678
      

  2.   

    静态初始化,在类加载的时候执行static语句块中的语句。但是这个类有个问题,缺少一个私有的构造方法。要不这样写的意义就不存在了。
      

  3.   

    静态初始化,在类加载的时候就已经确保了session的一个私有有实例instance,当你想获得一个session对象时调用它对外的方法getInstance()即可。在这里static块只是起到了一个初始化的作用。
      

  4.   

    呵,,新手,不懂java面向对象,所以胡乱写的!
      

  5.   

    静态块,在创建类的实例的时候被执行一次,以后在创建类的实例就不再实行啦,当执行Session session=Session.getInstance();的时候,静态块先执行,生成一个实例对象。
    同意二楼的观点,这样用没什么意义,用反射效率也比较低吧
      

  6.   

    用static修饰的代码块为静态代码块,也可以没有修饰符修饰代码块,他先于main函数执行,也就是说程序首先运行静态代码块,然后再运行其他。而且他只运行一次。而没用static修饰的代码块,可以运行多次