文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
 资讯动态   考试认证   新手入门   核心技术   高级技术   J2EE   J2ME   XML   开源技术   其他技术
您现在的位置: IT文谷 >> 开发平台 >> Java >> 新手入门 >> 面向对象 >> 文章正文
Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究
Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究
Java 学习之的对象初始化的讲究

Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究

  java在初始化的时候也有很多讲究,因为java中出现了类,所以在初始化的时候就有可能使用到创建新对象,所以,对于初始化的顺序要求的比较严格,请看下面一个程序,是thinking in java中的一个程序,被我稍加改编,这样可以更好的说明几个初始化的要点:
  
  class Cup
  
  {
  
      Cup(int marker)
  
      {
  
         System.out.println("Cup(" + marker + ")");
  
      }
  
      void f(int marker)
  
      {
  
         System.out.println("f(" + marker + ")");
  
      }
  
  }
  
  class Cups
  
  {
  
      static Cup c1=new Cup(1);
  
      Cup c3=new Cup(3);
  
      static Cup c2= new Cup(2);
  
      Cups()
  
      {
  
         System.out.println("Cups()");
  
      }
  
      Cup c4=new Cup(4);
  
  }
  
  public class ExplicitStatic
  
  {
  
      Cups c=new Cups();
  
      {
  
         System.out.println("Hello");
  
      }
  
      public static void main(String[] args)
  
      {
  
         System.out.println("Inside main()");
  
         Cups.c1.f(99);
  
         ExplicitStatic x=new ExplicitStatic();
  
      }
  
      static Cups x = new Cups();
  
  }
  
  大家可以手动执行一下这个程序,考虑一下结果是什么,然后参照下面的答案对照一下,看看是否正确:
  
  Cup(1)
  
  Cup(2)
  
  Cup(3)
  
  Cup(4)
  
  Cups()
  
  Inside main()
  
  f(99)
  
  Cup(3)
  
  Cup(4)
  
  Cups()
  
  Hello
  
  我总结了四个初始化的要点,如下:
  
  1、如果有static,即静态成员定义,首先初始化static的变量,如,在类Cups中c3在c2前面,可是在输出的结果中,你可以发现,c2是在c3前执行的,这就是因为,所有的static都在第一时间被初始化。
  
  2、Static只初始化一次,在第二次创建类的对象的时候,就不会去执行static的语句,如,在第二次执行new Cups()的时候,就只输出了Cup(3)和Cup(4),显然,static的两个创建对象的语句没有做。
  
  3、变量的初始化在方法前。如,在Cups类中,方法Cups()在语句Cup c4=new Cup(4)之前,可是输出结果的时候,打印的Cups()却在Cup(4)之后。
  
  4、在含有main的类中执行顺序是先做static,然后就是main,而不是像其它类一样,除了static就按顺序做下来。如,在main函数中,如果去掉语句ExplicitStatic x=new ExplicitStatic(),则Cups c=new Cups()和System.out.println("hello")都不会执行。另外,留个小问题,如果去掉了System.out.println("hello")外的括号会怎么样呢?

Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究

  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    用Java得到Excel中Formula的值
    基于Java 开发QuickTime 程序
    java学习——理解面向对象程序设计
    过程式设计和面向对象设计的比较(组图)
    面向切面(AOP)与面向对象(OOP)(图)
    61条面向对象设计的经验原则
    Java 入门之开始面向对象的编程
    面向对象编程:Java collection更有效管理elements
    养成良好的Perl OOP习惯
    面向对象编程:Java复杂数据类型用法
    面向对象编程:Java的简单数据类型
    面向对象编程:Java中的抽象数据类型
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 在本网BBS上发表言论者,文责自负。
    ③ 如您因版权等问题需要与本网联络,请在30日内联系 。
    Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究
    Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究2006-7-18Java 学习之的对象初始化的讲究

    JAVA专题
    人气排行
  • 此栏目下没有文章
  • 最近更新
    普通文章我的Thinking in Java学习笔
    普通文章使用JBoss和Eclipse创建J2EE
    普通文章SpringFramework(9)
    普通文章NoTitle385
    普通文章向Web Service进军--Axis+
    普通文章JAVA中的指针,引用及对象的c
    普通文章JAVA中用动态代理类实现记忆
    普通文章JAVA中用动态代理类实现记忆
    普通文章DB Test
    普通文章基金系统的初步研究(1)
    全站热点       
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷社区
    Tel: 0577-65690019    E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2006 wengu.org 文谷 All Rights Reserved
    浙ICP备05000327号