1 对象的相等问题,什么相等(地址还是值)?基本类型同理吗?如 Query1 := Query2;
这里是把Query2的值给Query1还是将地址给Query1?
i,k:Integer;i:=5;
k:=i;
这里又是什么相等呢?2 java中可以用equals和==号来进行引用和值的比较,delphi如何实现这两种不同的比较呢?3 Delphi中单态模式的实现,如何实现单态呢?
在java中有static的静态变量,很容易就实现对象的单例了,delphi中又如何做到呢?
4 delphi中给一个单元文件里的变量给值以后,如不手动消除,这个变量的值就会一直存在吗?
3 class关键字的作用

解决方案 »

  1.   

    1.Delphi的赋值操作(:=),如果是对象的话是传递指针(引用),基本类型则是值拷贝.2.Delphi中所有对象的变量都是指针(引用),要比较对象内容(值),就自己实现这个类的比较函数.基本类型除外(可直接比较值).3.Delphi的单态要用全局变量来实现
    interface
    uses SysUtils;type  TSingleton = class
      public
        constructor Create; virtual;
        destructor Destroy; override;
      end;var
      g_Singleton1: TSingleton; // 全局变量implementationconstructor TSingleton.Create;
    begin
      if g_Singleton1 <> nil then
        abort
      else
        g_Singleton1 := Self;
    end;destructor TSingleton.Destroy;
    begin
      if g_Singleton1 = self then
        g_Singleton1 := nil;
      inherited Destroy;
    end;4.如果是对象,那你创建了就要记得销毁它.前面已经说了,对象的赋值(:=)是引用,如果源被销毁了,那它指向的地址就无效了.5.class关键字修饰procedure或function时相当于C++中的static,产生静态过程或函数,不用构造实例就可直接调用,Create就是一个例子(ABC := TABC.Create).这些东西,应该在啃书+实验中去学习,楼主加油吧.
      

  2.   

    不是不愿回答,delphi的机制和java确实有区别,对java又不太了解,简单说一下。
    1,5应该跟java中一样
    4一直存在
    2值的比较用=,equals引用比较应该是地址比较吧(不知理解对不对)delphi取地址用@ 
    3 delphi中也有静态变量,需要编译器开关
      比如:
      const
     {j+}
       a:integer=0;
      {j-}
      

  3.   

    :=操作的是指针,则是地址赋值,操作的是数据,就是数据复制
    =就是数值相等,=对指针就是地址Java没指针这个说法,Delphi就有,和C一样的Delphi没有静态变量,不能声明静态类,需要全局变量代替,或者复杂一点的Class function类方法变量有作用范围,局部变量编译器自动优化,不具备延续性Class是Object Pascal的基本语法,定义类用的,有时也是类方法,自己看书去
    这都是很基础的事情来的