{ 
GregorianCalendar thisday = new GregorianCalendar(); 
java.util.Date d = thisday.getTime(); 
DateFormat df = DateFormat.getDateInstance(); 
String s = df.format(d); 
System.out.println("Today is " + s); 

为什么有的地方 不用那个New 来创建实例 可以直接用呢?
比如:DateFormat df = DateFormat.getDateInstance(); 
另外 请高手们能不能帮我解释一下上面代码每行 所代表的意思? 
上面代码是 输出当前时间的一个 java代码!另外:
Java连接数据库的代码:小弟 我也是 看的不是很懂,这个代码 我都是死记硬背下来的 ,但是不是很清楚他们所代表的意思?
                   Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection cot = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?          characterEncoding=gbk" ,"root","123");
Statement stm =cot.createStatement();
ResultSet rs =stm.executeQuery(sql);希望大侠们帮我解释一下啊!

解决方案 »

  1.   

    所有的非抽象类,非接口,无显示构造方法的类或构造方法不是用private修饰的类
    都可以用new来创建一个新的实例。
    至于
    DateFormat df = DateFormat.getDateInstance(); 
    这一行,首先DateFormat是一个抽象类,所以不能new,但你可以在API中看DateFormat的getDateInstance()这个方法:getDateInstance
    public static final DateFormat getDateInstance()获取日期格式器,该格式器具有默认语言环境的默认格式化风格。 
    返回:
    DateFormat它是static的,也就是可以直接拿来用的,不需要该类的实例就可以调用,而它的返回值就是一个DateFormat的实例,所以才会出现上面那一行。
    至于连数据库……你不清楚它的意思也没多大的关系,记住这个格式会用就够了。
    如果以后熟练了,想研究深入一点再去看它的源码。
      

  2.   

    getInstance方式是单例模式的标准方法,用于保证获取对象的唯一性。你看看那个方法的实现就明白了,随便写个简单实现:private static Object o = null;public static Object getInstance(){
      if(o == null){
        o = new Object();
        return o;
      } else {
        return o;
      }
    }
      

  3.   

     1 楼说的比较具体了
    静态方法可以用类名直接调用。
    而LZ的这个方法所处的环境还是返回一个实例 ,getDateInstance();
    所以就直接用它获得一个实例对象了
      

  4.   

    DateFormat中的getDateInstance()方法定义是这样的:
    public final static DateFormat getDateInstance(); 它是一个静态的方法
    这里使用静态工厂方法创建了这个对象的实例,调用静态方法不需要创建类的对象就可以直接使用"类名.方法名" 来调用.而且注意到DateFormat是一个抽象类哦.所以,创建类的实例 有很多种, new 是一种,还有使用工厂方法模式创建..慢慢的你就会明白啦数据库那个 ,你看下JDBC就明白啦,随便一本入门书都有讲解的使用的
     
      

  5.   

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    //利用反射机制,使用class类的静态方法formname()来加载驱动
    Connection cot = DriverManager.getConnection("jdbc:mysql://localhost:3306/student? characterEncoding=gbk" ,"root","123");
    //建立与数据库的连接
    Statement stm =cot.createStatement();
    //创建statement对象,用于调用sql句
    ResultSet rs =stm.executeQuery(sql);
    //执行sql语句,并反回一个结果集